Я пишу приложение Oauth2.
Приложение Spring:
@SpringBootApplication
@EnableAuthorizationServer
@EnableResourceServer
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
application.properties
security.oauth2.client.client-id=jerpweb
security.oauth2.client.client-secret=implementa
security.oauth2.client.authorized-grant-types=password,client_credentials,authorization_code,refresh_token
security.oauth2.client.scope=openid
security.oauth2.client.auto-approve-scopes=.*
, а конфигурация безопасности:
@Configuration
@EnableWebSecurity
@EnableTransactionManagement
@Order(-5)
public class SecurityConfigurationOauth extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailServiceImpl userService;
@Autowired
private PasswordEncoderService passwordEncoder;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{
auth.userDetailsService(userService).passwordEncoder(passwordEncoder);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.requestMatchers()
.antMatchers("/login", "/oauth/authorize", "/oauth/confirm_access")
.and()
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin().loginPage("/login").permitAll();
}
}
oauth-сервер работает с протоколом пароль (localhost: 8081 / oauth / token).
если я использую клиент oauth2
@SpringBootApplication
@EnableOAuth2Sso
public class ApplicationUi {
public static void main(String[] args) {
SpringApplication.run(ApplicationUi.class, args);
}
}
security.oauth2.client.client-id=jerpweb
security.oauth2.client.client-secret=implementa
security.oauth2.client.access-token-uri=http://localhost:8081/oauth/token
security.oauth2.client.user-authorization-uri=http://localhost:8081/oauth/authorize
security.oauth2.client.token-name=oauth_token
security.oauth2.client.authentication-scheme=query
security.oauth2.client.client-authentication-scheme=form
security.oauth2.client.scope=openid
клиент перенаправлен на сервер авторизации правильно, но если аутентификация прошла успешно, клиент не возвращается.
То есть если я вызываю страницу localhost: 8080 / меня перенаправляют на http://localhost:8081/login, но если аутентификация в порядке, браузер остается на странице ttp: // localhost: 8081 / login вместо возврата на страницу localhost: 8080 /.
Какая корректная конфигурация SecurityConfiguration с
oauth2 форма входа ?