滑动过期 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混合认证授权