热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   根域文章 -   正文

JWT 结构组成

zhiliaoadmin
2021-03-09 09:23:24
0

JWT 结构

令牌组成

token string ====> header.payload.singnature token

  • 1.标头(Header)

  • 2.有效载荷(Payload)

  • 3.签名(Signature)

  • 因此,JWT通常如下所示:xxxxx.yyyyy.zzzzz Header.Payload.Signature

Header

  • 标头通常由两部分组成:令牌的类型(即JWT)和所使用的签名算法,例如HMAC SHA256或RSA。它会使用 Base64 编码组成 JWT 结构的第一部分。

  • 注意:Base64是一种编码,也就是说,它是可以被翻译回原来的样子来的。它并不是一种加密过程。

常用格式如下

{ "alg": "HS256", "typ": "JWT"}

Payload

  • 令牌的第二部分是有效负载,其中包含声明。声明是有关实体(通常是用户)和其他数据的声明。同样的,它会使用 Base64 编码组成 JWT 结构的第二部分

{ "sub": "1234567890", "name": "John Doe", "admin": true}

==注意== :在负载中不能放置敏感信息(Password)

Signature

  • 前面两部分都是使用 Base64进行编码的,即前端可以解开知道里面的信息。Signature 需要使用编码后的 header 和 payload 以及我们提供的一个密钥,然后使用 header 中指定的签名算法(HS256)进行签名。签名的作用是保证 JWT 没有被篡改过

  • 如:

HMACSHA256(base64UrlEncode(header) + "." + + base64UrlEncode(payload),secret);

签名目的

  • 最后一步签名的过程,实际上是对头部以及负载内容进行签名,防止内容被窜改。如果有人对头部以及负载的内容解码之后进行修改,再进行编码,最后加上之前的签名组合形成新的JWT的话,那么服务器端会判断出新的头部和负载形成的签名和JWT附带上的签名是不一样的。如果要对新的头部和负载进行签名,在不知道服务器加密时用的密钥的话,得出来的签名也是不一样的。


大家都在看

前端开发找工作要学多久?前端开发需要学什么?

2021-03-09 浏览次数:0

程序员说的接口是什么?编程的接口是什么意思

2021-03-09 浏览次数:0

常用的java开发平台有哪些?Java开发平台分...

2021-03-09 浏览次数:0

前端开发需要学什么语言?前端小白必读

2021-03-09 浏览次数:0

java自学成功率大吗?如何才能高效学习java

2021-03-09 浏览次数:0

java和javase一样吗?Java和java...

2021-03-09 浏览次数:0
最新资讯