ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

jwt简介

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

 

返回列表