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
浙公网安备 33010602011771号