authentication - JWT 可以是有状态的吗?

标签 authentication jwt stateful

我一直选择在 session 中使用 jwt,因为后端的开销较少(请记住,这一切都取决于用例),但我遇到的主要问题是 token 失效举个例子:如果用户被停用,相关的 jwt 仍然有效,直到过期。有没有办法以经济高效的方式解决这个问题?

PS - 但是我在 cookbook section on the featherjs 中看到了“撤销 JWT”一词 框架。但看起来他们仍然使用 Redis 作为查找,这反过来又使其继承了使用 session 的缺点。

最佳答案

JWT 发出后,其有效期与 exp 声明值一样长。您无法撤销 JWT,这不是 JWT 的工作方式。

正如您所指出的,有多种方法可以模仿撤销行为,但为此您需要两件事:

  • 您需要一个数据库,其中包含有关哪些 token 被撤销的信息
  • 您必须确保每当使用 token 时都会在线检查数据库。

没有其他方法可以做到这一点。

如果您确实需要撤销 JWT,则意味着您需要 session ,并且您不应该为此使用 JWT。您可以看看this article了解原因。如果您决定坚持使用 JWT,请查看此 best practices我写这篇文章是为了知道要注意什么。

关于authentication - JWT 可以是有状态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67783024/

相关文章:

java - 在 HTTP 连接中使用基于 token 的身份验证时如何防止重放攻击

c# - 从 MVC Controller 验证 SignalR

ruby-on-rails-3 - OmniAuth 提供什么机制来确保安全登录?

angularjs - locationChangeStart 和防止路线改变

api - Trigger.io 安全性,特别是针对 REST API

node.js - PEM 例程 :PEM_read_bio:no start line - Unable to decode JWT token

bash - 在 bash 中创建 RS256 JWT

tensorflow - 如何使用 'stateful' 变量/张量在 Keras 中创建自定义层?

dart - 内部 Widget 中的 Flutter setState

rest - Restful Web 服务中的状态