Cookies JSON Web令牌(JWT)相对于cookie的优势/劣势

Cookies JSON Web令牌(JWT)相对于cookie的优势/劣势,cookies,jwt,Cookies,Jwt,与cookie相比,JWT的一个优势似乎是它绕过了cookie的原产地限制 有人能帮我理解JWTs的其他优点和重要的缺点吗?在这里的类似帖子中可以找到许多与网络相关的信息:;我想指出一些“架构”上的差异: JWT是一种标准化的容器格式,使用“声明”以安全的方式对用户和客户端相关信息进行编码(而cookie内容和签名/加密未标准化) JWT不限于呈现关于已认证用户本身的类似会话的信息;它们还可用于将访问权委托给代表用户的客户端 JWT允许比Cookie更细粒度的访问模型,因为JWT可以在“范围”(

与cookie相比,JWT的一个优势似乎是它绕过了cookie的原产地限制


有人能帮我理解JWTs的其他优点和重要的缺点吗?

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

  • JWT是一种标准化的容器格式,使用“声明”以安全的方式对用户和客户端相关信息进行编码(而cookie内容和签名/加密未标准化)
  • JWT不限于呈现关于已认证用户本身的类似会话的信息;它们还可用于将访问权委托给代表用户的客户端
  • JWT允许比Cookie更细粒度的访问模型,因为JWT可以在“范围”(它们允许客户端做什么)和时间上受到限制

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

    从新选项卡获取请求如何?如果您在通过浏览器访问的web应用程序上使用JWT,可以安全地假设用户可能希望打开不同的选项卡(或者手动输入所需的URL)。在这种情况下,在发出请求之前(例如,将其注入头中),您无法读取存储的JWT。Cookie没有这个问题,因为它们是通过浏览器与新请求一起本地发送的,即使是在新的选项卡上。关于这个问题,我提出了一个问题:前提是,在访问URL时,如果没有提供正确的JWT,浏览器将被重定向到一个特定的端点(授权服务器),在那里它可以获得JWTRe:关于cookie的使用,stormpath上有一篇有趣的文章,JWT在cookie上传输。这很好,因为服务器仍然可以使用cookie的JWT进行身份验证,而无需检查数据库,这是使用JWT的主要原因之一。@noderman我会亲自在客户端处理这个问题。任何GET请求实际上都会检索我的web应用程序(可能是SPA),然后SPA会使用存储在localStorage中的令牌发出任何必要的AJAX请求。虽然你提出的问题是合法的,但我认为这很容易解决。@nodeman我不确定使用cookie存储令牌是否是一个好主意。为什么不简单地用传统的方式使用cookie呢。JWT的整体思想是提供更安全的方式。如果您将其存储在cookie中,您将被允许访问CSRF,因为您的凭据将随任何请求自动发送。看看github对话。用户joepie91指出了一些与该方法相关的严重安全问题。