1. 完整JWT格式
{
alg: "RS256",
typ: "JWT",
kid: "bael-key-id"
}.
{
loginType: "PWD",
user_name: "admin",
scope: [
"read"
],
tenantCode: "gitee",
exp: 1594108986,
authorities: [
"ROLE_ADMIN"
],
jti: "bd805e23-e8b6-4ac6-88de-0a4fc2e9b1f0",
client_id: "web_app"
}.
[signature]
完整JWT包括三部分:Header - 头部 、Payload - 负载 、Signature(签名)
2. 字段解析
header字段
KID(可选): 代表秘钥序号。开发人员可以用它标识认证token的某一秘钥
payload字段
scope:可选。表示授权范围。 参考链接
jti: 唯一标识jwt,将其放入黑名单,避免攻击者重复访问,从而可以帮助防止攻击者发送相同JWT以发出请求的replay attacks
重放攻击(Replay Attacks)又称重播攻击、回放攻击或新鲜性攻击(Freshness Attacks),是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。 jti是被放到JWT中的唯一的ID,可以防止重放攻击。