滑动过期 JWT 以防止用户注销

Posted

技术标签:

【中文标题】滑动过期 JWT 以防止用户注销【英文标题】:Sliding expiration JWT in order to prevent logout to the user 【发布时间】:2021-10-21 09:56:55 【问题描述】:

我有一个 ASP.NET Core MVC 项目,请求正在通过 cookie 进行身份验证,并且滑动过期为 true。

现在根据要求,这个 MVC 项目将被编写为 .NET Core 项目,并且请求应该使用 JWT 进行身份验证。

为 JWT 实现滑动过期的最佳方法是什么?

我读到的一个想法是检查 JWT,如果需要重新发布一个新的并通过响应标头发送它,以便客户端可以获取新的 JWT 并更新现有的令牌。

我想知道最好的地方是验证 JWT 并根据某些配置在需要时重新发出新的 JWT 并将其发送到响应标头中(重新发出 JWT 将仅适用于现有的有效令牌)

授权过滤器 CustomAuthentication 中间件

还是其他地方?

谢谢

【问题讨论】:

【参考方案1】:

看看JwtSecurityTokenHandler 类。您可以覆盖其受保护的虚拟方法之一ValidateLifetime(),以执行您想要的操作。这样,您甚至可能不需要重新签发 JWT - 只需根据您的窗口计算指定它仍然有效。

【讨论】:

感谢您的评论,我徘徊在这种方式是否还需要用新的到期时间更新令牌不是吗?所以下次到期将是滑动到期值 是的。那是我的观点。如果您可以确定提供的令牌是否仍然有效,则无需重新颁发新令牌。重要的一点是确定最后一次请求的日期/时间(使用该 JWT),以便继续向前滑动窗口。

以上是关于滑动过期 JWT 以防止用户注销的主要内容,如果未能解决你的问题,请参考以下文章

微服务授权。如何防止具有有效 JWT 的用户访问其他用户的资源?

实践剖析.NET Core如何支持Cookie滑动过期和JWT混合认证授权

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

其中 jsonwebtoken 存储在服务器 nodejs 中。用户注销后如何使 JWT 过期

jwt令牌过期后如何注销

防止注销后的返回操作