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

Sam*_*Sam 6 cookies session session-cookies jwt json-web-token

我知道JWT是无状态令牌,它存储有关客户端声明的签名信息,并通过Authorization HTTP头传递给服务器.

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

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

我错过了什么吗?

Mvd*_*vdD 6

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

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