当我们有客户端会话时,为什么需要 JWT?

2024-02-23

据我所知,JWT 是无状态令牌,它存储有关客户端声明的签名信息,并通过授权 HTTP 标头传递到服务器。

我的问题是,当我们已经有了客户端会话时,为什么还需要 JWT(https://github.com/mozilla/node-client-sessions https://github.com/mozilla/node-client-sessions)?客户端会话在概念上是相同的。它们是包含签名信息的 cookie,经过验证后意味着 cookie 尚未被篡改。此外,客户端会话存储在 cookie 中并通过 Cookie HTTP 标头传递。这是同一件事,只是用不同的词。我错了吗?

那么,为什么 JWT 还在呢?我可以理解,也许重点是标准化身份验证令牌的工作方式,但我们在没有基于会话 ID 的标准的情况下相处得很好(每个实现都以自己的方式行事)。另外,为什么 JWT 不使用 cookie 作为传输手段。使用 cookie,您不需要为每个请求显式发送正确的标头(简化 Ajax 请求)。

我错过了什么吗?


JWT 令牌是经过签名的 JSON 格式文档,用于声明有关用户(或任何主体)的声明。如果您信任令牌的发行者,您就信任令牌中的声明,并可以据此做出授权决策。

JWT 令牌通常用于调用外部 Web API。这些 API 不一定与您的网站位于同一域中,因此不能使用与您的网站相同的 cookie。 JWT 令牌用于 REST 服务,因为它们不需要在服务器上存储任何会话信息。使用 JWT 令牌也不易受到攻击CSRF https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet攻击。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我们有客户端会话时,为什么需要 JWT? 的相关文章

随机推荐