强制过期 JWT

Posted

技术标签:

【中文标题】强制过期 JWT【英文标题】:Force expire JWT 【发布时间】:2019-03-04 12:46:33 【问题描述】:

问题陈述:-

当用户想要从移动设备上注销时,强制使 JWT 过期。

问题:-

由于 JWT 不存储在任何数据库中(因为这样做会破坏 JWT 的全部目的)强制使 JWT 令牌过期的正确方法是什么?

当我阅读各种答案时,我意识到 JWT 不能手动过期(这是我想要实现的)

根据 JWT,它只有在达到令牌中设置的过期时间时才会过期。根据安全性,这很糟糕。

选项

    当用户点击注销时,从移动应用程序中清除缓存和 JWT。但问题仍然在于 JWT 仍然有效。

    当用户注销时维护一个列入黑名单的 JWT 列表,并将其与之后的每个请求进行比较。这违背了 JWT 的全部目的。 这种方法不具备可扩展性并且是一种糟糕的实现方式。

我不确定正确的方法是什么。

【问题讨论】:

如果您需要管理已撤销令牌的列表,那么您根本不需要 JWT。 @FlorentMorselli 完全正确。 【参考方案1】:

无会话性能与会话需求是难以实现的权衡之一。 一种方法(有一些限制)是使用短期 JWT 和 Renewal Token 撤销来强制过期。

【讨论】:

以上是关于强制过期 JWT的主要内容,如果未能解决你的问题,请参考以下文章

Django 强制密码过期

关于JWT用户主动注销强制登出忘记密码修改密码的一些思考

我可以强制 LWP::UserAgent 接受过期的 SSL 证书吗?

强制用户在 Spring Security 中更改过期密码

如何在节点/角度/nginx应用程序上强制缓存过期

php 强制清除过期的WP Super Cache文件