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

本文探讨了refreshToken在刷新access_token后发生变化的原因,主要是由于新生成的access_token ID(ati)导致。同时,介绍了如何通过配置认证服务器实现refreshToken的复用来延长其有效期。当设置为非重复使用时,refreshToken在有效期内可以无限次刷新,保持其有效性。此外,还讨论了refreshToken的两种使用模式:重复使用和非重复使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

第一次返回的refreshToken
第二次返回的refreshToken

将两次返回的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有效期内刷新便永不失效达到

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值