【问题标题】:JSON Web Token (JWT) advantages/disadvantages over CookiesJSON Web Token (JWT) 相对于 Cookie 的优势/劣势
【发布时间】:2015-02-24 08:05:39
【问题描述】:

JWT 优于 cookie 的一个优势似乎是它绕过了 cookie 的来源限制。

有人可以帮助我了解 JWT 的任何其他优势,重要的是还有其他劣势吗?

【问题讨论】:

    标签: cookies jwt


    【解决方案1】:

    就我的使用而言,JWT 只是一个令牌,用于表示客户端无法伪造的数据。您可以通过 http 标头或 cookie 将其传递给服务器。您只需要在服务器端实现两种访问 JWT 的方式,然后再处理它。 cookie 对 Web 浏览器很实用,但对于普通的 http 请求,例如使用 curl 或本机应用程序时,使用标头更容易。 JWT 与协议无关,您也可以在 Web 套接字中使用它,将其放入 json 有效负载或其他任何地方,只要它可以在接收端访问和解码。

    【讨论】:

      【解决方案2】:

      很多与网络相关的信息可以在这里的类似帖子中找到:Token Authentication vs. Cookies;我想指出一些“架构”差异:

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

      【讨论】:

      • 来自新标签的 GET 请求怎么样?如果您在通过浏览器访问的 Web 应用程序上使用 JWT,可以安全地假设用户可能想要打开不同的选项卡(并且可能手动输入所需的 URL)。在这种情况下,您无法在发出请求(例如,将其注入标头)之前读取存储的 JWT。 Cookie 没有这个问题,因为它们是由浏览器本机发送的,带有新请求,即使在新标签上也是如此。我就这个问题提出了一个问题:stackoverflow.com/questions/30061307/…
      • 前提是在访问 URL 时没有提供正确的 JWT,浏览器将被重定向到可以获取 JWT 的特定端点(授权服务器)
      • Re: cookie 的使用,stormpath stormpath.com/blog/… 有一篇有趣的文章,JWT 在 cookie 上传输。这很好,因为服务器仍然可以使用 cookie 的 JWT 进行身份验证,而无需检查数据库,这也是使用 JWT 的主要原因之一。
      • @noderman 我会亲自在客户端处理这个问题。任何 GET 请求实际上都会检索我的 Web 应用程序——可能是一个 SPA——然后该 SPA 将使用存储在 localStorage 中的令牌发出任何必要的 AJAX 请求。虽然您提出的问题是合理的,但我认为它很容易解决。
      • @nodeman 我不确定使用 cookie 存储令牌是否是个好主意。为什么不以传统方式简单地使用 cookie。 JWT 的整个想法是提供更安全的方式。如果您将它们存储在 cookie 中,您将被 CSRF 所吸引,因为您的凭据将随任何请求自动发送。看看 github 对话dwyl/learn-json-web-tokens。用户 joepie91 指出了与该方法相关的一些严重安全问题。
      猜你喜欢
      • 2010-10-31
      • 2014-02-11
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 2011-11-06
      • 2011-03-25
      相关资源
      最近更新 更多