我在哪里需要使用JWT?

el_*_*yan 8 authentication restful-authentication jwt

除了结构和协议之外,我想知道JWT在哪里适合客户端/服务器通信?

  • 是否可以替换身份验证和会话cookie?
  • 这是为了减轻在数据库或内存中存储会话令牌的服务器吗?
  • 是否让客户确保他们从预期的服务器接收数据,如果这不是一个问题,我不需要JWT?
  • 当连接是HTTPS/SSL时,服务器到服务器通信是必要的还是好的做法?

Mvd*_*vdD 12

JWT只是一种流行的基于JSON的安全令牌格式.

JWT令牌不是为了取代会话cookie而发明的.它们主要用于保护Web API(请求数据).另一方面,会话cookie用于Web应用程序,您可以在其中登录用户并自动发送每个请求(请求页面)的cookie.

作为承载认证方案的一部分,JWT令牌包含在授权HTTP头中.使用承载方案身份验证的主要优点是它不容易受到CSRF攻击,因为您的脚本需要将令牌显式附加到请求,并且可以跨域使用(与cookie不同).

承载方案身份验证确实需要HTTPS连接,因为只要令牌有效,任何设法窃取令牌的人都可以使用它来访问API.

OAuth2等安全协议使用JWT令牌来保护API.OpenID Connect使用JWT令牌对Web应用程序进行身份验证,但将令牌存储在cookie中.

由于JWT令牌由颁发者(进行身份验证的服务器)进行数字签名,因此可以在不与服务器再次通信的情况下对其进行验证.


Ove*_*der 9

什么是JWT?

这是一个令牌只有服务器可以生成,并可以包含数据的有效载荷。

有什么意义呢?

JWT有效负载可以包含用户ID之类的内容,这样,当客户端向您发送JWT时,您可以确定它是由您发布的,并且您可以看到向谁发布的。

在哪里有用?

通常,在RESTful API中,服务器不得使用任何类型的会话。

与使用会话有何不同?

  • 在典型的会话流中,浏览器发送一个包含令牌的cookie然后将其在服务器上与服务器用来验证用户身份的某些数据进行匹配

  • 在JWT流中,令牌本身包含数据。服务器解密令牌以仅认证用户。服务器上未存储任何数据。

使用JWT的典型身份验证流程是什么?

  • 用户凭据发送到 /signin
  • /signin 返回一个JWT
  • JWT存储在 localStorage
  • JWT在每个请求上都发送(到API?)
  • 服务器解密JWT并从中提取用户ID
  • 服务器发送给定身份验证用户的响应。

  • 我听过的最好的答案之一。 (2认同)