oauth2.0 配置token默认过期时间

2,082 阅读1分钟

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