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!
 评论









