Я пытаюсь сгенерировать токен, когда я нажимаю на api http://localhost:8083/oauth/token
(пароль типа) с правильными учетными данными клиента, он аутентифицирует клиента 4 раза, затем проверяет пользователя. Как только пользователь проверяется снова, проверяет клиента еще 2 раза.
Если я ввожу неверные учетные данные клиента, он проверяется один раз.
AuthServerConfig:
@Configuration
@EnableAuthorizationServer
public class AuthServerConfig extends AuthorizationServerConfigurerAdapter {
@Autowired private AuthenticationManager authenticationManager;
@Autowired private TokenStore tokenStore;
@Autowired(required = false) private JwtAccessTokenConverter accessTokenConverter;
@Bean
public MongoClientDetailsService clientDetailsService() {
return new MongoClientDetailsService();
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.withClientDetails(clientDetailsService());
}
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints
.tokenServices(tokenServices())
.authenticationManager(authenticationManager);
}
@Override
public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception {
oauthServer.tokenKeyAccess("permitAll()").checkTokenAccess("isAuthenticated()");
oauthServer.allowFormAuthenticationForClients();
}
@Primary
@Bean
public DefaultTokenServices tokenServices() {
DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
defaultTokenServices.setTokenStore(tokenStore);
defaultTokenServices.setSupportRefreshToken(true);
defaultTokenServices.setTokenEnhancer(accessTokenConverter);
defaultTokenServices.setClientDetailsService(clientDetailsService());
return defaultTokenServices;
}
}
AuthServerSecurityConfig:
@Configuration
public class AuthServerSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
@Bean
protected UserDetailsService userDetailsService() {
return new MongoUserDetailsService();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().ignoringAntMatchers("/oauth/token/");
}
@Override
public void configure(WebSecurity web) throws Exception {
super.configure(web);
}
@Bean(name="authenticationManager")
@Lazy
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Bean
public PasswordEncoder passwordEncoder() {
return NoOpPasswordEncoder.getInstance();
}
}