JSON Web Token(JWT)优于Cookie的优点/缺点

Ben*_*Ben 10 cookies jwt

JWT优于cookie的一个优点似乎是它绕过了对cookie的原始限制.

有人可以帮助我了解JWT的任何其他优点和重要的任何其他缺点吗?

Han*_* Z. 7

在这里的类似帖子中可以找到许多与网络相关的信息:令牌认证与Cookies ; 我想说出一些"架构"差异:

  1. JWT是一种标准化的容器格式,使用"声明"以安全的方式编码用户和客户端相关信息(而cookie内容和签名/加密未标准化)
  2. JWT不限于提供有关经过身份验证的用户本身的类似会话的信息; 它们还可用于委派代表用户行事的客户端的访问权限
  3. JWT允许比cookie更细粒度的访问模型,因为JWT可以限制在"范围"(它们允许客户端做什么)以及时间


PR7*_*PR7 5

优点

  1. JWT是一种无状态身份验证机制,因为用户状态永远不会保存在数据库中。由于 JWT 是独立的,所有必要的信息都在那里,减少了往返数据库的需要。使用 JWT,我们不需要查询数据库来对每个 api 调用的用户进行身份验证。
  2. 防止CSRF(跨站点请求伪造)攻击。
  3. JWT 结构紧凑。由于其大小,它可以通过 URL、POST 参数或在 HTTP 标头内发送。
  4. 您只能授权您希望授权的请求。每个请求都会发送 Cookie。
  5. 您可以将 JWT 发送到任何域。这对于使用需要授权的多个服务的单页应用程序特别有用 - 因此我可以在域上拥有一个 Web 应用程序myapp.com,该应用程序可以myservice1.commyservice2.com. Cookie 绑定到单个域。foo.com该域无法读取在该域上创建的 cookie bar.com

缺点

  1. 撤销a并不容易,JWT因为它是一种无状态的身份验证机制。这使得实现像Sign out from all devices. 使用基于会话的身份验证很容易实现这一点,因为我们只需要从数据库中删除会话即可。
  2. 需要编写一些代码来实现,同时cookies开箱即用。