JSON Web Token (JWT) 简介

作者 : 慕源网 本文共1755个字,预计阅读时间需要5分钟 发布时间: 2021-10-31 共216人阅读
我将在本文中解释 JSON Web Token。
在我们开始 JWT 之前,我们应该对 Authentication 和 Authorization 以及它们之间的区别有一个基本的了解。
简单地说,我们可以说,身份验证是使用凭据或身份验证用户,授权是验证分配给经过身份验证的用户的角色或权限。
身份验证和授权是安全 Web 开发的非常重要的概念。
现在让我们讨论 JWT。

JWT是什么?

JWT 代表 JSON 网络令牌。它是一种开放标准 (RFC 7519),用于在两方之间安全地传输信息。
现在的问题是什么是开放标准?开放标准意味着任何人都可以不受任何限制地使用它。
简而言之,JWT 对授权和信息交换很有用。
以下是 JWT 的几个要点或优势,
JWT的优势
  1. 可以通过 URL/Post 请求/HTTP Header 发送,这使得它可以快速传输和使用。
  2. Self Content – 它包含用户的详细信息(不像传统请求那样在 cookie 中包含会话 ID),因此无需查询数据库来获取用户详细信息。
  3. 数字签名 – 信息经过验证和信任。
  4. 在两个机构之间传输信息。主体是指用户、服务器等/用户、服务器等是指主体。
  5. 可以在大多数编程语言中使用,因为它可以直接映射到对象。
  6. JWT 可以使用秘密(使用 HMAC 算法)或使用 RSA 或 ECDSA 的公钥/私钥对进行签名。

现在让我们看看 JWT 的样子。

JSON Web Token 结构

JSON Web Token 由三部分带点组成。这三个部分是
  1. Header
  2. Payloa
  3. Signature.
JWT 通常看起来像
例如。XXXXX.YYYY.ZZZZZ
下图更准确地解释了JWT的结构,

JSON Web Token (JWT) 简介

Header

JSON Web Token (JWT) 简介

Header 是两部分的组合。
  1. Algorithm  – 正在使用的签名算法,例如 HMAC SHA256 或 RSA。
  2. Type – 令牌的类型。
例如,

JSON Web Token (JWT) 简介

此 JSON 是 Base64Url 编码以形成第一部分。
假设我们有像 aaaaaa.bbbbbb.cccccc 这样的 JWT。在此示例中,aaaaaa 是 Base64Url 编码的标头部分。

Payload

JSON Web Token (JWT) 简介

Payload 是 JWT 的第二部分。声明是用户详细信息或附加元数据。

注意

声明名称只能包含三个字符,而不是全名。
Payload 可以具有三种类型的声明。
Registered
一组非强制性但推荐的预定义声明。
一些registered claims(注册声明)是
  1. “iss” (issuer) 声明
  2. “sub”(subject) 声明
  3. “aud” (Audience) 声明
  4. “exp”(Expiration Time) 声明
  5. “nbf” (Not before) 声明
  6. “iat” (Issued At) 声明
  7. “jit” (JWT ID) 声明
Public
可以由使用 JWT 的人随意定义。新声明名称应在 IANA“JSON Web Token 声明”注册表中注册,或者是公共名称。
Private
创建自定义声明是为了在各方之间共享商定的信息,而不是注册或公开声明。
示例示例,

JSON Web Token (JWT) 简介

Payload 是 JWT 编码的 Base64Url。
注意
出于安全原因,除非加密,否则不要在标头或负载中提供任何安全信息。
Signature
创建Signature  =  Encoded Header + “.” + (Encoded payload , Secret) 使用标头中指定的算法对其进行签名。

JSON Web Token (JWT) 简介

在上面的示例中,使用 HMAC SHA256 算法进行签名。

JSON 网络令牌如何工作?

现在我们将讨论 JWT 和传统 Session + Cookies 是如何工作的。
传统方式
第一张图解释了传统方式:

JSON Web Token (JWT) 简介

  • 客户端(浏览器)将带有凭据的请求发布到服务器。
  • 服务器验证用户凭据并创建Session  ID。Session  id 将存储在服务器内存中并发送回用户以进行后续请求。
  • Session  ID 将存储在 cookie 或任何其他存储中。
  • Session  id 将在后续请求中发送到服务器。
  • 服务器收到会话 ID、验证并向用户提供请求的响应。

JSON WEB TOKEN

现在我们将讨论 JSON WEB Token 以进一步了解差异。

JSON Web Token (JWT) 简介

上图解释了 JWT 的工作原理,

  1. 客户端(浏览器)将带有凭据的 post 请求发送到服务器。
  2. 服务器验证用户凭据并生成 JWT + secret。在这种情况下,服务器不会存储任何内容,这将节省服务器内存并提高性能。
  3. 在授权标头上发送 JWT。
  4. 向浏览器发送响应。
我希望你喜欢这篇文章,它也能帮助你开始使用 Json Web 令牌。

慕源网 » JSON Web Token (JWT) 简介

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录