黑名单 JWT 令牌

Posted

技术标签:

【中文标题】黑名单 JWT 令牌【英文标题】:Blacklist JWT Token 【发布时间】:2019-02-23 17:19:22 【问题描述】:

根据 Matt Way 在这篇文章中的回答:Invalidating JSON Web Tokens

关于使用令牌黑名单的#2 解决方案,但我有一个问题是服务器如何准确地知道旧令牌并将其添加到黑名单中。例如:当我登录时,我从服务器收到“ABCD”令牌,服务器不会将此令牌保存在任何地方。然后我更改密码(或注销),服务器应该向我发送一个像“EFGH”这样的新令牌并使旧的“ABCD”无效(通过将“ABCD”添加到黑名单直到它过期)但问题是服务器如何知道“ABCD” " 旧令牌添加到黑名单?

【问题讨论】:

【参考方案1】:

要执行与帐户相关的操作,连接时生成的 JWT 令牌必须存在于请求的标头中(通常在 Authorization 标头中)。

客户端将存储令牌并在必要时将其发送给服务器以验证自己。

服务器只需要检索标头中存在的令牌以使其无效并在必要时将其列入黑名单。

【讨论】:

所以这意味着当您想重置令牌以获取新令牌时,您需要在标头中传递旧令牌,以便服务器可以检索它并添加到黑名单 如果同时存在访问令牌和刷新令牌,则不是这样。用户可以使用访问令牌发送请求,我们不知道要使哪个刷新令牌无效。

以上是关于黑名单 JWT 令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Simple JWT(django rest)将 JWT 令牌列入黑名单?

黑名单/验证/生成 JWT 刷新令牌

为 Spring Boot 制作黑名单 JWT 令牌

Laravel JWT 令牌总是被列入黑名单

PHP-Open-Source-Saver / jwt-auth 无效和黑名单 JWT 令牌

使用 Laravel JWT 重新认证时将旧令牌列入黑名单