У меня есть приложение Angular 7 с пружинным API.Я использую Spring Security, токены JWT и https://github.com/manfredsteyer/angular-oauth2-oidc для обработки входа в систему.
Я могу войти в систему, но когда я выхожу из системы и нажимаю еще раз, я сразу же получаю новый токен,без необходимости подключения.Я новичок в весенней безопасности и токенах JWT, но, насколько я знаю, я не могу правильно выйти из системы сзади, классический способ - удалить токен спереди.Это то, что делает библиотека, и, конечно, я попытался очистить вручную localStorage (где хранится токен), но даже с очищенным localStorage, когда я пытаюсь войти в систему, я сразу получаю новый токен.
AnyИдея о том, что происходит и как я могу выйти из системы?
Конфигурация сервера авторизации:
@Configuration
@EnableAuthorizationServer
public class OAuth2AuthorizationServerConfigJwt extends AuthorizationServerConfigurerAdapter {
@Override
public void configure(final ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory().withClient("sampleClientId")
.authorizedGrantTypes("implicit")
.scopes("read", "write", "foo", "bar")
.autoApprove(true)/*.accessTokenValiditySeconds(3600)*/
.redirectUris("http://localhost:4200");
}
@Override
public void configure(final AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
final TokenEnhancerChain tokenEnhancerChain = new TokenEnhancerChain();
tokenEnhancerChain.setTokenEnhancers(Arrays.asList(tokenEnhancer(), accessTokenConverter()));
endpoints.tokenStore(tokenStore()).tokenEnhancer(tokenEnhancerChain);
}
@Bean
public TokenStore tokenStore() {
return new JwtTokenStore(accessTokenConverter());
}
@Bean
public JwtAccessTokenConverter accessTokenConverter() {
final JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
converter.setSigningKey("123");
return converter;
}
@Bean
public TokenEnhancer tokenEnhancer() {
return new CustomTokenEnhancer();
}
}
Редактировать:
Похоже, это было связано сотсутствие
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
Но теперь, когда я добавил его, я застрял в форме входа в систему, кажется, что все еще чего-то не хватает.Вот мой конфиг:
@Override
protected void configure(final HttpSecurity http) throws Exception {
http.csrf().disable()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers("/login").permitAll()
.antMatchers("/user").permitAll()
.antMatchers("/registrationConfirm").permitAll()
.antMatchers("/user/confirm/**").permitAll()
.antMatchers("/user/registration/**").permitAll()
.antMatchers("/oauth/token/revokeById/**").permitAll()
.antMatchers("/tokens/**").permitAll()
.anyRequest().authenticated()
.and().formLogin().permitAll();
}