滑动刷新令牌生存期过期后注销用户

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 异常,我们可以使用它来注销用户。

【讨论】:

以上是关于滑动刷新令牌生存期过期后注销用户的主要内容,如果未能解决你的问题,请参考以下文章

当 jwt 刷新令牌未过期时,React Native 应用程序注销

仅在刷新页面时令牌过期时注销?为啥?

腾讯先锋怎么解决token过期

在反应应用程序中访问令牌过期后自动注销

jwt令牌过期后如何注销

我们应该与访问令牌一起更新刷新令牌吗?