滑动刷新令牌生存期过期后注销用户
Posted
技术标签:
【中文标题】滑动刷新令牌生存期过期后注销用户【英文标题】:Logout user after sliding refresh token lifetime expired 【发布时间】:2021-10-05 03:18:25 【问题描述】:我们将 IdentityServer4 和 oidc-client-js 库用于 Angular。 我们注意到令牌会自动更新,这很好。但是我们希望用户在 SlidingRefreshTokenLifetime 过期后退出。 我们将 AccessTokenLifetime 设置为 900(15 分钟),将 SlidingRefreshTokenLifetime 设置为 7200(2 小时)。用户应在空闲 2 小时后注销。当我们使用带有刷新令牌的连接/令牌自己向 IdentityServer 发出请求时,这在没有 oidc-client-js 的情况下工作得很好。
我们正在对带有 oidc-client-js 库的 UserManagerSettings 使用 automaticSilentRenew: true。只要 SlidingRefreshTokenLifetime 没有过期,就应该这样做。
我们怎样才能完成这种行为?
编辑:另外,如果我们在 oidc-client-js 中将 automaticSilentRenew 设置为 false,它仍然会自动刷新令牌。
【问题讨论】:
【参考方案1】:我们能够完成我们想要的行为。 我们必须将 SlidingRefreshTokenLifetime 设置为 false 但也删除以下事件,即使它们的回调为空:
addAccessTokenExpiring addAccessTokenExpired
他们也触发了自动令牌刷新。
然后我们在每个请求上使用我们的服务器响应来获取新令牌。我们将得到一个 401,我们可以通过以下方法处理它:Angular 4 Interceptor retry requests after token refresh
如果刷新令牌过期,现在 signinSilent 将抛出一个 invalid_grant 异常,我们可以使用它来注销用户。
【讨论】:
以上是关于滑动刷新令牌生存期过期后注销用户的主要内容,如果未能解决你的问题,请参考以下文章