7

我了解 JWT 是无状态令牌,用于存储有关客户端声明的签名信息,并通过 Authorization HTTP 标头传递给服务器。

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

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

我错过了什么吗?

4

1 回答 1

6

JWT 令牌是已签名的 JSON 格式文档,用于断言有关用户(或任何委托人)的声明。如果您信任令牌的颁发者,则您信任令牌中的声明,并且可以基于此做出授权决策。

JWT 令牌通常用于调用外部 Web API。这些 API 不一定与您的网站位于同一域中,因此不能使用与您的网站相同的 cookie。JWT 令牌用于 REST 服务,因为它们不需要存储在服务器上的任何会话信息。使用 JWT 令牌也不会受到CSRF攻击。

于 2015-05-02T02:03:39.040 回答