oauth2.0 配置token默认过期时间
代码
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
...
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
// TokenEnhancerChain是TokenEnhance的一个实现类
TokenEnhancerChain chain = new TokenEnhancerChain();
List<TokenEnhancer> delegates = new ArrayList<>();
delegates.add(jwtTokenEnhancer);
// 还要把转换器放进去用来实现jwtTokenEnhancer的互相转换
delegates.add(jwtAccessTokenConverter);
chain.setTokenEnhancers(delegates);
endpoints.authenticationManager(authenticationManager)
.userDetailsService(userDetailsService)
// 可以看到主要是增加了 JwtAccessTokenConverter JWT访问令牌转换器和JwtTokenStore JWT令牌存储组件
// 通过AuthorizationServerEndpointsConfigurer 授权服务器端点配置加入两个实例
// 指定token存储到redis
.tokenStore(tokenStore)
.accessTokenConverter(jwtAccessTokenConverter)
// 设置JWT增强内容
.tokenEnhancer(chain);
// 配置TokenService参数,设置token默认过期时间
DefaultTokenServices tokenService = new DefaultTokenServices();
tokenService.setTokenStore(endpoints.getTokenStore());
tokenService.setSupportRefreshToken(true);
tokenService.setClientDetailsService(endpoints.getClientDetailsService());
tokenService.setTokenEnhancer(endpoints.getTokenEnhancer());
// token默认过期时间
tokenService.setAccessTokenValiditySeconds(7200);
// refresh_token默认过期时间
tokenService.setRefreshTokenValiditySeconds(86400);
// 该字段设置设置refresh token是否重复使用,true:reuse;false:no reuse.
tokenService.setReuseRefreshToken(false);
endpoints.tokenServices(tokenService);
}
}
token过期时间调用优先顺序:
1、DefaultTokenServices的配置
// token默认过期时间
tokenService.setAccessTokenValiditySeconds(7200);
// refresh_token默认过期时间
tokenService.setRefreshTokenValiditySeconds(86400);
2、oAuth2.0中默认配置
access_token默认有效时长为12个小时,refresh_token默认时长为30天
3、oauth_client_details单个配置
字段:access_token_validity、refresh_token_validity