В настоящее время я изучаю Spring Cloud OAuth и довольно успешно выполнил SSO с базовым HTTP на сервере безопасности.
Теперь я пытаюсь интегрировать форму входа в систему (страница входа в Spring по умолчанию), отключив http basic. Но всякий раз, когда вводятся правильное имя пользователя и пароль, он снова перенаправляется на страницу входа на сервер безопасности, как если бы он не прошел аутентификацию.
- Клиент переходит в службу SSO (неавторизовано)
- Перенаправлен на безопасность / oauth / authorize? ... (неавторизованный)
- Перенаправлено на безопасность / вход, клиент вводит правильные учетные данные (аутентифицирован)
- Перенаправлен на безопасность / oauth / authorize? ... (неавторизованный)
- Перенаправлено СНОВА в безопасность / логин
Вот моя конфигурация для службы безопасности.
spring:
profiles: development
application:
name: security
security:
user:
password: none
oauth2:
client:
client-id: client
client-secret: 1234
grant-type: password, authorization_code, refresh_token
scope: read, write
auto-approve-scopes: read, write
authorized-grant-types: password, authorization_code, refresh_token
resource:
user-info-uri: http://${server.address}:${server.port}${server.context-path}/oauth/user
token-info-uri: http://${server.address}:${server.port}${server.context-path}/check_token
prefer-token-info: false
basic:
enabled: false
server:
port: 8082
context-path: /security
address: localhost
@SpringBootApplication
@EnableAuthorizationServer
public class Application extends SpringBootServletInitializer {
/**
* {@inheritDoc }
*/
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
builder.sources(Application.class);
return builder;
}
/**
* @param arguments the command line arguments
*/
public static void main(String[] arguments) {
SpringApplication.run(Application.class, arguments);
}
@Configuration
@EnableResourceServer
public static class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated()
.and()
.formLogin().permitAll()
.and()
.logout().permitAll();
}
}
@Configuration
@EnableWebSecurity
public static class AuthenticationServerConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated()
.and()
.formLogin().permitAll()
.and()
.logout().permitAll();
}
}
}
Вот моя конфигурация для клиентской службы:
spring:
profiles: development
application:
name: sso
security:
user:
password: none
oauth2:
client:
client-id: client
client-secret: 1234
access-token-uri: http://${server.address}:8082/security/oauth/token
user-authorization-uri: http://${server.address}:8082/security/oauth/authorize
resource:
user-info-uri: http://${server.address}:8082/security/oauth/user
token-info-uri: http://${server.address}:8082/security/check_token
prefer-token-info: false
server:
port: 8085
context-path: /sso
address: localhost
@SpringBootApplication
@EnableOAuth2Sso
public class Application extends SpringBootServletInitializer {
/**
* {@inheritDoc }
*/
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
builder.sources(Application.class);
return builder;
}
/**
* @param arguments the command line arguments
*/
public static void main(String[] arguments) {
SpringApplication.run(Application.class, arguments);
}
}
Я что-то упустил или у меня неправильная конфигурация? Пожалуйста исправьте.