【发布时间】:2020-04-14 15:03:05
【问题描述】:
我有一个关于刷新令牌的问题。我在 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 秒后过期?
我可能误解了这种滑动刷新令牌机制的工作原理。有人可以解释为什么我仍然可以使用已过期的刷新令牌请求新的访问令牌吗?
【问题讨论】:
标签: angular asp.net-core asp.net-web-api identityserver4 angular-auth-oidc-client