refreshToken刷新token后会变化的原因以及refreshToken的复用

refreshToken刷新token后会变化的原因以及refreshToken的复用

两次使用refreshToken刷新token返回的refreshToken如下:

refreshToken刷新token后会变化的原因以及refreshToken的复用_第1张图片
refreshToken刷新token后会变化的原因以及refreshToken的复用_第2张图片

将两次返回的refreshToken解密后可以看到。除了ati不一样,其它参数都是一样的

ati(access token):新的访问令牌的id
jti : refreshToken 的id

既然刷出了新的token,那么ati肯定变了,那么由这些信息加密成的refreshToken自然也是一直变化的

那么如果想无限制刷新refreshtoken的有效期怎么办?
可以在认证服务器配置refreshToken的复用

 public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
        TokenEnhancerChain tokenEnhancerChain = new TokenEnhancerChain();
        List<TokenEnhancer> tokenEnhancers = new ArrayList<>();
        tokenEnhancers.add(tokenEnhancer());
        tokenEnhancers.add(jwtAccessTokenConverter());
        tokenEnhancerChain.setTokenEnhancers(tokenEnhancers);
        endpoints
                .authenticationManager(authenticationManager)
                .accessTokenConverter(jwtAccessTokenConverter())
                .tokenEnhancer(tokenEnhancerChain)
                .userDetailsService(userDetailsService)
                // refreshToken非重复使用     
                .reuseRefreshTokens(false);
    }

refresh token有两种使用方式:重复使用(true)、非重复使用(false),默认为true

  1. 重复使用:access token过期刷新时, refresh token过期时间未改变,仍以初次生成的时间为准
  2. 非重复使用:access token过期刷新时, refresh token过期时间延续,在refresh token有效期内刷新便永不失效达到

参考链接

你可能感兴趣的:(初入职场,spring,boot,jwt,oauth2)