Springboot 2 Oauth2 не может перенаправить на SSO-клиент - PullRequest
0 голосов
/ 11 сентября 2018

В настоящее время я работаю над реализацией Springboot 2.x oauth2.Но у меня возникли некоторые сложные проблемы.

Проект включает в себя как auth-server, так и sso-client (ссылка на GitHub приведена внизу).Проблема в том, что когда я ввел защищенный URL (например, localhost: 9000 /), он будет перенаправлен на страницу входа, настроенную на auth-сервере.Однако после успешного входа он не будет перенаправлен обратно на sso-клиент.

Конфигурация сервера авторизации для auth-сервера:

@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {

    private AuthenticationManager authenticationManager;

    public AuthorizationServerConfig(AuthenticationConfiguration authenticationConfiguration) throws Exception {
        this.authenticationManager = authenticationConfiguration.getAuthenticationManager();
}

    @Override
    public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
        super.configure(security);
    }

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.inMemory()
            .withClient("client")
            .secret("secret")
            .authorizedGrantTypes("authorization_code")
            .scopes("all")
            .autoApprove(true);
    }

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
    endpoints.authenticationManager(authenticationManager);
    }
}

Конфигурация безопасности для auth-сервера:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
            .withUser("root")
            .password(passwordEncoder().encode("root"))
            .roles("ADMIN");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.antMatcher("/**")
            .authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .and()
            .csrf().disable();
    }
}

Конфигурация безопасности для sso-клиента:

@Configuration
@EnableOAuth2Sso
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.antMatcher("/**")
            .authorizeRequests()
            .anyRequest().authenticated();
    }
}

application.yml для sso-клиента:

auth-server: http://localhost:9090

server:
  port: 9000

security:
  oauth2:
    client:
      client-id: client
      client-secret: secret
      scope: all
      user-authorization-uri: ${auth-server}/oauth/authorize
      access-token-uri: ${auth-server}/oauth/token
    resource:
      token-info-uri: ${auth-server}/oauth/check_token
      preferTokenInfo: false

Вот ссылка на этот проект: https://github.com/paul8263/SpringBoot2Oauth2

PS: я заставил его работать с пружинной загрузкой 1.5.8: https://github.com/paul8263/SsoDemo2

Я сравнил коды с Springboot2 (первая ссылка), но едва заметил заметную разницу.

Может ли кто-нибудь помочь мне решить эту проблему, сделав простую демонстрацию работающей?Большое спасибо.

...