jwt简介

JWT(Json Web Token),是一种用于在网络上传递信息的开放标准。它是一种轻量级,自包含的令牌,常被用来在客户端和服务器之间传递身份信息

1 相关概念

1.1 MAC(Message Authenticaion Code)消息认证码

简单讲,消息认证码,就是通信双方约定一种规则,生成一串字符,在发送消息的时候,连带着这串字符一起发送,这串字符就叫做消息认证码。接收方在收到消息后,通过消息认证码来辨别消息的真伪

1.2 sha-256(Secure Hash Algorithm)安全散列算法256

sha-256是散列函数的一种,能对一个任意长度的数字消息,计算出一个32个字节(256bit)长度的字符串(又称消息摘要)

1.3 HMAC(Hash based Message Authenticaion Code)基于散列的消息认证码

HMAC算法利用哈希运行,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。

1.4 HMAC-SHA256

即使用sha-256作为哈希函数的HMAC算法

2 JWT的组成

JWT由3部分组成:

  • Header
  • Payload
  • Signature

2.1 Header

通常包含类似于令牌类型(JWT)、签名算法(HMAC-SHA256)等信息。使用base64进行编码

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

2.2 Payload

通常包含注册声明(签发者、过期时间、主题)、公共声明、私有声明

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

2.3 Signature

将Header和Payload经过BASE64Url编码(注意和传统BASE64编码不同,它将+变为-,将/变为_,并且去掉填充字符=),连同密钥进行HMAC-SHA256编码得到的字符串

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

最终,我们看到的jwt的形式类型如下形式 xxx.xxx.xxx

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJ4eHgiLCJleHAiOjE3NjU4MTMxNTV9.NHrzEjbFbIU473rnfCgDIFaSAw2ZTCRWtpvRDtCcnJg

 

posted @ 2025-12-15 21:43  zhenjingcool  阅读(2)  评论(0)    收藏  举报