学习文章:什么是JWT?(细致讲解)_Ethereal@_@的博客-CSDN博客
总结:
1.JWT,它定义了一种紧凑的、自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。
2.JWT 一般是一个字符串,分为三个部分,以 “.” 隔开:
3.JWT 第一部分是头部分,它是一个描述 JWT 元数据的 Json 对象
{ "alg": "HS256", "typ": "JWT" }
4.JWT 第二部分是 Payload,也是一个 Json 对象,除了包含需要传递的数据,还有七个默认的字段供选择。
-
iss (issuer):签发人/发行人
-
sub (subject):主题
-
aud (audience):用户
-
exp (expiration time):过期时间
-
nbf (Not Before):生效时间,在此之前是无效的
-
iat (Issued At):签发时间
-
jti (JWT ID):用于标识该 JWT
5.JWT 第三部分是签名。是这样生成的,首先需要指定一个 secret,该 secret 仅仅保存在服务器中,保证不能让其他用户知道。这个部分需要 base64URL 加密后的 header 和 base64URL 加密后的 payload 使用 . 连接组成的字符串,然后通过header 中声明的加密算法 进行加盐secret组合加密,然后就得出一个签名哈希,也就是Signature,且无法反向解密。