JWT 与令牌设计

以紧凑的 JSON 结构承载声明并附带签名;服务端无状态校验友好,但撤销困难,需要短有效期加刷新令牌、密钥轮换与时钟偏差容忍策略配合。

结构header.payload.signature,声明含 sub、exp、aud、scope
校验算法白名单、签名、受众、过期与生效时间
撤销短有效期加刷新令牌;必要时引入吊销列表

服务端校验清单

服务端校验清单
1. 算法白名单(拒绝 none 与算法混淆)
2. 验签:使用签发方公钥或共享密钥
3. 时间:exp、nbf、iat 与时钟偏差容忍
4. 受众:aud/iss 匹配当前服务
5. 授权:scope/role 校验通过后再放行
禁用 none 算法并防止算法混淆攻击;密钥与签发者信息要集中管理。

易错点

  • 把敏感信息放入 payload(可被解码读取)
  • 仅靠长期有效令牌,泄露后无法及时止损

数据来源与参考

  • RFC 7519:JWT
  • RFC 8725:JWT Best Current Practices
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌