【问题标题】:JWT (Token based authentication) vs Session / Cookies - Best UsageJWT(基于令牌的身份验证)与 Session / Cookies - 最佳用法
【发布时间】:2021-10-30 06:38:13
【问题描述】:

我一直在阅读有关此主题的大量信息,但找不到我正在寻找的好答案。

所以我对JWT vs Session的优缺点的理解是

智威汤逊 亲

  • 由于没有在服务器端查找数据库,因此更具可扩展性。 (假设是无状态的 JWT)

骗局

  • 客户端的令牌存储需要经过深思熟虑。 (带有 httpOnly 的 cookie 比本地存储更可取,但 cookie 有 4kb 大小限制)
  • 不可立即撤销
  • 权限在下次刷新之前可能会失效

会话 亲

  • 可以说更安全,因为您只传递会话 ID(不透明的引用),比 XSS 更容易防范 CSRF,等等。
  • 用户的更改会立即反映出来。

骗局

  • 可扩展性不如令牌

所以根据我的理解,

  1. 支持大量用户(亚马逊、优步)的网站使用哪种方法?使用带分布式缓存的会话是否足够好?

  2. 在现实生活中使用 JWT(基于令牌)而不是基于会话更有意义的用例是什么?

谢谢!

【问题讨论】:

  • 您通常根本不希望您的客户知道会话中存储的内容。这对于 JWT 来说是不可能的。为会话数据和 JWT 签名声明使用会话。

标签: web-services authentication session jwt scalability


【解决方案1】:

JWT 从未设计用于处理会话。它们是在服务之间交换完整性保护消息的一种方式。看看这篇文章:http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/,它解释了为什么使用 JWT 处理会话不是一个好主意。

您还可以阅读 BFF 模式:https://curity.io/resources/learn/the-bff-pattern/,您在其中使用轻量级后端组件来处理令牌,并且仍然只处理前端中的会话。因为它是一个轻量级组件,所以很容易扩展它——例如它可以是一个 lambda 函数。

因此,在我看来,没有真正好的用例让您真正更喜欢基于 JWT 的会话而不是基于 cookie 的会话,但是(正如任何强烈的意见),这可能会引发讨论;)

【讨论】:

    猜你喜欢
    • 2016-10-01
    • 2016-09-21
    • 1970-01-01
    • 2023-03-25
    • 2016-06-01
    • 2018-05-10
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    相关资源
    最近更新 更多