《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
这种格式是OAuth2附带token的一种规范格式
至于什么是OAuth2,那是另一个话题了
这样一来,服务器就能够收到这个令牌了,通过对令牌的验证,即可知道该令牌是否有效。
它们的完整交互流程是非常简单清晰的:
令牌的组成
为了保证令牌的安全性,jwt令牌由三个部分组成,分别是:
-
header:令牌头部,记录了整个令牌的类型和签名算法
-
payload:令牌负荷,记录了保存的主体信息,比如你要保存的用户信息就可以放到这里
-
signature:令牌签名,按照头部固定的签名算法对整个令牌进行签名,该签名的作用是:保证令牌不被伪造和篡改
它们组合而成的完整格式是:header.payload.signature
比如,一个完整的jwt令牌如下:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE1ODc1NDgyMTV9.BCwUy3jnUQ_E6TqCayc7rCHkx-vxxdagUwPOWqwYCFc
它各个部分的值分别是:
-
header:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
-
payload:eyJmb28iOiJiYXIiLCJpYXQiOjE1ODc1NDgyMTV9
-
signature: BCwUy3jnUQ_E6TqCayc7rCHkx-vxxdagUwPOWqwYCFc
下面分别对每个部分进行说明
header
======
它是令牌头部,记录了整个令牌的类型和签名算法
它的格式是一个json对象,如下:
{
“alg”:“HS256”,
“typ”:“JWT”
}
该对象记录了:
-
alg:signature部分使用的签名算法,通常可以取两个值
-
HS256:一种对称加密算法,使用同一个秘钥对signature加密解密
-
RS256:一种非对称加密算法,使用私钥加密,