JWT 和会话的黑名单有啥区别?

Posted

技术标签:

【中文标题】JWT 和会话的黑名单有啥区别?【英文标题】:What is the difference between a blacklist of JWT's and sessions?JWT 和会话的黑名单有什么区别? 【发布时间】:2021-12-27 14:51:32 【问题描述】:

实现登录流程并被 JWT 说服,因为我们优先考虑扩展。 过去,系统将基于单体应用程序中的会话令牌。 JWT 意味着我们显然不再需要为用户会话提供缓存服务器了。那么这就是我感到困惑的地方:

如果我通过保留密钥黑名单(是建议)来解决撤销和令牌窃取问题,那么现在从上面看起来与会话令牌完全相同,因为我正在对每个请求进行查找。

也许我没有完全欣赏某事或认为这是错误的。 也许——没有找到被阻塞的 JWT 的结果比完全检索要快。

感谢任何可以解决这个问题的事情:)

【问题讨论】:

【参考方案1】:

如果您实现了一个保留令牌黑名单的功能,那么这确实与会话没有太大变化。您仍然需要查找令牌、保持黑名单更新、正确复制等。

更好的办法是让访问令牌的过期时间非常短,例如 5 或 15 分钟。一个足够短的时间,你可以接受有人窃取代币并在这么短的时间内使用它的风险。那么你只能保留一个刷新令牌的黑名单,这些令牌使用频率较低。

【讨论】:

谢谢。我也在计划那部分,但不太明白这真的是你能做的主要事情。可能是唯一的事情。 :)

以上是关于JWT 和会话的黑名单有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Oauth2 + JWT登出(黑名单方案)

JWT 吊销信息在哪里存储,mongoDB 还是 Redis?

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

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

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

使用黑名单缓存使JWT无效是否安全?