英文原版 https://www.ietf.org/rfc/rfc7519.txt 或 https://tools.ietf.org/html/rfc7519
中文翻译 https://www.jianshu.com/p/10f5161dd9df
1. 概述
JSON Web Token(JWT)是一种紧凑的、URL安全的方法用来表示
在两个部分之间的传输声明. 通常由2种实现: JWS=JSON Web Signature,JWE=JSON Web Encryption。实际上JWT包含了一个大家族。
https://tools.ietf.org/html/rfc7515 = JWS
https://tools.ietf.org/html/rfc7516 =JWE
https://tools.ietf.org/html/rfc7517 = JWK
https://tools.ietf.org/html/rfc7518 = JWA
https://tools.ietf.org/html/rfc7519 = JWT
https://tools.ietf.org/html/rfc7520 =JOSE
2.定义
仔细扣字眼去理解以上文绉绉的定义,可以发现 JW(*)家族并不是同级关系。
举个不是很恰当的例子:
一个json:
{"action":"8点进攻"},
对这个json做数字签名,用然后用 内容 || "." || 签名 的格式包装
{"action":"8点进攻"}.eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9
这个就是JWS
对这个json
{"action":"8点进攻"}
或
{"action":"8点进攻"}.eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9
加密,形成
05kLzcSr4qKAq7YN7e9jwQRb23
这个就是JWE.
以上例子说明JSE和JSW的核心区别是一个签名(数据没有被篡改,来源是真实),一个加密(明文无法被第三者知晓)。一般把JSE作为多JWT的实现用来做网站的请求验证。
3.结构