JWT

数据构成

JWT = Bearer {Header}.{Payload}.{Signature}

Header:头部
Payload:负载
Signature:签名

Header部分(使用Base64URL编码)

{
"alg": "HS256", //表示签名的算法(algorithm),默认是 HMAC SHA256(写成 HS256)
"typ": "JWT" //表示这个令牌(token)的类型(type),JWT 令牌统一写为JWT
}

Payload部分(使用Base64URL编码)

  • 7个官方字段:

iss (issuer):签发人
exp (expiration time):过期时间
sub (subject):主题
aud (audience):受众
nbf (Not Before):生效时间
iat (Issued At):签发时间
jti (JWT ID):编号

  • 也可以自定义字段:

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

Signature部分

  • Signature 部分是对前两部分的签名,防止数据篡改。
    首先,需要指定一个密钥(secret)。这个密钥只有服务器才知道,不能泄露给用户。然后,使用 Header 里面指定的签名算法(默认是 HMAC SHA256),按照下面的公式产生签名:

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容