В настоящее время я работаю над реализацией 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 (первая ссылка), но едва заметил заметную разницу.
Может ли кто-нибудь помочь мне решить эту проблему, сделав простую демонстрацию работающей?Большое спасибо.