JWT
JSON Web Token是一种Token认证形式,基于开放标准(RFC 7519)。
可用于认证、信息交换。
token的特征
- 是URL安全传输的字符串,可以放在请求头、请求体、链接上
- 自给自足,携带可读的信息
- 由三部分组成:header、payload、signature
header
header 是base64编码的字符串,包含token的类型、哈希算法
json
{
"typ": "jwt",
"alg": "HS256"
}
payload
payload 是base64编码的字符串,包含存放在token上的自定义数据,例如
json
{
"sub": "1234567890",
"name": "john",
"admin": true
}
存放的数据可以分为三类:
- Registered claims:保留字段,留给实现JWT的应用使用,有7种
- Public claims:公开、任意使用
- Private claims:对除生产者和消费者外的角色没有意义的字段
signature
signature 是base64编码的字符串,内容通过使用header内指定的哈希算法,对base64编码后的header.payload
再加上密钥处理,生成签名。
js
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
签名用于防篡改。