我使用了微服务,目前正在使用JWT访问令牌进行访问。但是访问令牌会在一定时间内消失。为了克服这种情况,我实现了刷新令牌来更新过期的访问令牌。现在,我想对刷新令牌的生存期没有限制。如何实现呢?
注意:我正在使用身份服务器4生成JWT令牌
答案 0 :(得分:1)
查看代码,验证刷新令牌的生存期,我刚刚看到了
return (now > creationTime.AddSeconds(lifetime));
所以答案是:不可能将其设置为无界。
不过,您可以随意将默认值2592000秒/ 30天更改为更长的时间。刚刚设置
AbsoluteRefreshTokenLifetime = <your_desired_value>
在Identityserver中的每个客户端配置中
答案 1 :(得分:1)
将RefreshTokenExpiration = Sliding
和AbsoluteRefreshTokenLifetime = 0
设置为documented。
DefaultRefreshToken服务会将其视为不确定的幻灯片。相关代码:
// if absolute exp > 0, make sure we don't exceed absolute exp
// if absolute exp = 0, allow indefinite slide
var currentLifetime = refreshToken.CreationTime.GetLifetimeInSeconds(Clock.UtcNow.UtcDateTime);
var newLifetime = currentLifetime + client.SlidingRefreshTokenLifetime;
// zero absolute refresh token lifetime represents unbounded absolute lifetime
// if absolute lifetime > 0, cap at absolute lifetime
if (client.AbsoluteRefreshTokenLifetime > 0 && newLifetime > client.AbsoluteRefreshTokenLifetime)
{
newLifetime = client.AbsoluteRefreshTokenLifetime;
}
refreshToken.Lifetime = newLifetime;
将SlidingRefreshTokenLifetime
设置为更长的时间,例如一个月。
通过这些设置,用户可以无限期刷新令牌,但有一个限制:用户不能处于不活跃状态的时间不能超过一个月。
您可以将此值调整为可接受的到期时间。