Как выйти из системы единого входа Oauth2

Я нашел учебник по SSO https://github.com/dsyer/spring-security-angular/tree/master/oauth2 с конфигурацией

oauth2-authserver

@Configuration
@Order(-10)
protected static class LoginConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private AuthenticationManager authenticationManager;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        http
            .formLogin().loginPage("/login").permitAll()
        .and()
            .requestMatchers().antMatchers("/login", "/oauth/authorize", "/oauth/confirm_access")
        .and()
            .authorizeRequests().anyRequest().authenticated()
            .and().sessionManagement();
        // @formatter:on
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.parentAuthenticationManager(authenticationManager);
    }
}

oauth2-ui

@Override
    public void configure(HttpSecurity http) throws Exception {
        http.logout().and().antMatcher("/**").authorizeRequests()
                .antMatchers("/index.html", "/home.html", "/", "/login").permitAll()
                .anyRequest().authenticated().and().csrf()
                .csrfTokenRepository(csrfTokenRepository()).and()
                .addFilterAfter(csrfHeaderFilter(), CsrfFilter.class);
    }

Мне нужен мой authserver только для однократной проверки входа в систему, поэтому, когда пользователь уже аутентифицирован и перенаправлен в приложение oauth2-ui, срок аутентификации на сервере истек. Поэтому, когда пользователь выходит из системы oauth2-ui и пытается снова войти в систему, пользователь должен снова ввести имя пользователя и пароль, поскольку срок аутентификации на сервере истек.

Извините за плохой английский, заранее спасибо!


person prptn    schedule 30.04.2015    source источник


Ответы (1)


Если вы читаете блог https://spring.io/blog/2015/02/03/sso-with-oauth2-angular-js-and-spring-security-part-v, который фактически объясняет способ реализации того же тип безопасности, как вы это делаете (на самом деле вы просто реализуете версию jwt почти того же самого. Если вам нужен фактический код блога, используйте версию oauth2-vanilla того же репо) ... ближе к концу это четко сказано, что «это заведомо сложная проблема» (как написано в блоге). На самом деле существует новая версия той же серии блогов, которая решает вашу проблему https://github.com/dsyer/spring-security-angular/tree/master/double. Здесь вы можете увидеть, как можно реализовать выход из системы с помощью spring-session и redis-сервера, который фактически хранит ваш сеанс. Всего наилучшего! В случае каких-либо разъяснений, пожалуйста, свяжитесь с нами.

person Saurav Kumar    schedule 02.05.2015
comment
Спасибо за помощь, реально реализую с помощью двойного проекта! - person prptn; 08.05.2015
comment
Общеизвестно, что сложная проблема может быть правдой, но дело в том, что если вы добавите ссылку выхода для публикации в / logout с помощью самого простого приложения Spring Boot MVC, вы не получите локальный выход (забудьте о глобальном выходе). - person Nico de Wet; 27.07.2016