Я знакомлюсь с oauth2.0 учебником с использованием токенов Spring и JWT.Меня интересует роль tokenServices()
в классе SecurityConfig
.Проблема, с которой я столкнулся, заключается в том, что когда я устанавливаю токен доступа на 30s
с помощью: defaultTokenServices.setAccessTokenValiditySeconds(30);
, он не работает.В AbstractTokenGranter
bean-компоненте AuthorizationServerTokenServices
с автоматическим подключением является DefaultTokenServices
, но с установленным значением по умолчанию 43200s
(не 30
).Но когда я устанавливаю его прямо на ClientDetailsServiceConfigurer
на configurer.accessTokenValiditySeconds(30)
, это работает.
Вопрос в том, почему настройка access token validity
работает здесь:
@Override
public void configure(ClientDetailsServiceConfigurer configurer) throws Exception {
configurer
.inMemory()
.withClient(clientId)
.secret(passwordEncoder.encode(clientSecret))
.authorizedGrantTypes(grantType)
.scopes(scopeRead, scopeWrite)
.resourceIds(resourceIds)
.accessTokenValiditySeconds(30);
}
, но не здесь:
@Bean
@Primary
public DefaultTokenServices tokenServices() {
final DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
defaultTokenServices.setTokenStore(tokenStore());
defaultTokenServices.setSupportRefreshToken(true);
defaultTokenServices.setAccessTokenValiditySeconds(30);
return defaultTokenServices;
}
Согласно ответу @DeezCashews в этой записи должно работать в обоих местах.