我有一个与刷新令牌有关的问题。我在 Identity Server 中配置了我的 Angular 客户端,如下所示:
RefreshTokenUsage = TokenUsage.OneTimeOnly,
AccessTokenLifetime = 30,
AbsoluteRefreshTokenLifetime = 3600,
RefreshTokenExpiration = TokenExpiration.Sliding,
SlidingRefreshTokenLifetime = 60,
此外,我的 Angular 客户端使用“静默更新”机制(使用 angular-auth-oidc-client)。
如果 Angular 客户端启动,20 秒后“静默更新”启动并请求新的访问令牌,这是有道理的,因为这大约是 30 秒访问令牌生命周期的 75%)。它获得了一个新的访问令牌,并且一切都在继续工作。
在给定的时刻,我停止了无声的更新。这意味着它不再刷新访问令牌,实际上,一段时间后我对 Web api 的调用失败,因为访问令牌已过期。
现在,几分钟后我重新启动“静默更新”。
奇怪的是它成功获得了一个新的访问令牌,但我的理解是这应该不再起作用,因为刷新令牌应该在 60 秒后过期?
我可能误解了这种滑动刷新令牌机制的工作原理。有人可以解释为什么我仍然可以使用已过期的刷新令牌请求新的访问令牌吗?