首页 > 编程知识 正文

JWT的数据格式详解

时间:2023-05-04 16:52:15 阅读:158210 作者:3780

1.1 .概要JWT,全名为Json Web Token,采用JSON风格的轻量级许可证和认证规格,可以实现无状态、分布式的web APP许可证; 这是分布式服务权限控制的标准解决方案。

官方网站: https://jwt.io

GitHub上jwt的java客户端: https://github.com/jwtk/jjwt

1.2 .数据格式普通token:32位UUID

JWT的token :

JWT的token包含三个数据。

头:头部,通常头部包含两个信息:声明类型type,此处为jwt(type=jwt )加密算法,自定义(rs256/base64/hs256 )

我们对头部进行base64加密(可解密),得到第一部分的数据Payload。 负载是有效的数据。 一般来说,用户识别信息-userid,username )注意,此处采用的是base64加密,因此可以解密,所以请不要保管机密信息)注册声明)例如token的发行时间

该部分也采用base64加密,得到第二部分的数据Signature:base64加密、签名,是整个数据的认证信息。 一般是在前两个阶段的数据的基础上,再加上服务的私钥(secret,盐),为了不泄露,最好用加密算法生成)。 用于验证整个数据的完整性和可靠性的JWT实际上是一个字符串,由头部、载荷和签名三部分组成。

头(header )头用于描述有关JWT的最基本的信息,诸如其类型和用于签名的算法。 这也可以表示为JSON对象。

{ 'typ':'JWT ',' alg':'HS256'}这就是头部的明文。 第一部分表示他是jwt,第二部分表示他在签名算法中使用了HS256算法。

然后,对该头部进行BASE64编码,进行编码以形成头部:

eyj0exaioijkv1qilcjhbgcioijiuzi1nij 9载荷(payload )载荷是存储有效信息的位置,有效信息包括三个部分:

((1)已列入标准的声明;(建议但不强制使用) )。

iss: jwt发行者sub: jwt的目标用户aud:接收jwt的exp: jwt的有效期限必须在定义发行时间nbf:的时间之前。 iat: jwt的发行时间jti: jwt的唯一id )2)公共声明

的声明可以添加任何信息,一般添加用户的相关信息和其他业务所需的信息。 但是,不建议添加机密信息。 这部分是因为客户端可以解密。

(三)私有声明

专用声明是提供者和消费者共同定义的声明,一般不推荐保管机密信息。 base64是对称解密的,这意味着该信息的一部分可以分类为明文信息。

{ 'sub':'1234567890 ',' name':'tengshe789 ',' admin': true} '上有简单的负荷明文。 然后用base64加密。

eyjzdwiioixmjm0nty3odkwiiwibmftzsi6ikpvag4grg9liiwiywrtaw4ionrydwv 9签证(signature ) jwt的第三部分是签证信息,该签证信息由三部分组成。

标题(在基本64之后的)基础64之后的)部分使用由在基本64中加密的标题和在基本64中加密的标题由.连接构成的字符串,并且是由标题声明的加密方法

结论:

1有jwt规则的token

它由三个部分Header.payload.signature组成,每个部分都用base64加密

3 jwt的各部分可以解密

以上是今天的内容。 如果错了,请在下面评论哦。 呃!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。