Json Web Token
Json Web Token (JWT) 是一个开放标准(RFC 7519),它符合设计 Restful API 时的无状态原则,每一次从客户端向服务器发出的请求都是独立的。
JWT 由三个部分组成:Header、Payload 和 Signature,它是一个长字符串,每个子串之间不存在换行符,一般的格式是[Header].[Payload].[Signature]
其 Header
承载了两部分信息:类型和所使用的密码算法,例如
1 | { |
Payload
存放了实际需要传递的数据,JWT 中所规定的 7 个可选用的常规字段如下,负载默认是不会进行加密的,所以不可以用来存放秘密信息
Field | Name | Desc |
---|---|---|
iss | Issuer | 签发人 |
exp | Expiration Time | 过期时间 |
sub | Subject | 主题 |
aud | Audience | 受众 |
nbf | Not Before | 生效时间 |
iat | Issued At | 签发时间 |
jti | JWT ID | 编号 |
Signature
是对前面两部分消息的签名,以避免数据被篡改,签名的密钥只有服务器知道,使用 Header
指定的签名算法来产生签名
1 | HAMAC-SHA256(base64(header) + "." + base64(payload), secret) |
客户端在通过认证后接收服务器返回的 JWT,将其存放在 cookie 或 localStorage 中,此后客户端会在与服务器的交互中都携带 JWT 以表明自身身份
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Decision`s blog!
评论