Skip to content
导航

JWT

JSON Web Token是一种Token认证形式,基于开放标准(RFC 7519)。

可用于认证、信息交换。

token的特征

  • 是URL安全传输的字符串,可以放在请求头、请求体、链接上
  • 自给自足,携带可读的信息
  • 由三部分组成:header、payload、signature

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)

签名用于防篡改。