JWT

JWT 的结构、签名机制、校验边界、撤销难点与常见 Web API 使用方式。

#tech / security #type / concept #status / growing #resource / jwt

[!info] related notes

JWT

JWT(JSON Web Token)是一种自包含的 Token 格式,通常用于身份声明和接口鉴权。

结构

  • Header
  • Payload
  • Signature

一句话理解

JWT 不是认证方案本身,而是一种“把声明打包后再签名”的 Token 格式。

工作原理

常见流程是:

  1. 服务端生成 Header 和 Payload
  2. 用密钥或私钥对前两段做签名
  3. 客户端拿到 JWT 后,在请求里主动携带
  4. 服务端验证签名、过期时间、issuer、audience 等约束

它的关键点不是“加密”,而是:

让服务端能验证这个令牌是不是自己签发、有没有被篡改。

关键点

  • JWT 不是“认证方案”本身,而是 Token 的一种格式
  • JWT 本身不等于安全,安全取决于签名校验、过期策略和存储方式
  • JWT 可放在 Cookie,也可放在请求头里

为什么它常见

  • 适合前后端分离 API
  • 适合移动端和多端调用
  • 可以在多个服务之间透传身份声明

什么时候它会变麻烦

  • 想主动让某个已签发 Token 立刻失效
  • 权限变化希望实时生效
  • 需要细粒度设备会话管理

这时通常要配合:

  • 短期 Access Token
  • 长期 Refresh Token
  • 黑名单 / 版本号 / Redis
  • 更强的服务端会话控制

不该把 Payload 当成什么

  • 不是机密保险箱
  • 不是数据库
  • 不是权限控制的唯一来源

因为 JWT 的 Payload 通常只是可解码可读取的声明,不适合放敏感隐私字段。

常见误区

  • 把 JWT 和 Token 对立起来
  • 以为 JWT 一旦发出就不需要撤销策略
  • 以为存到 localStorage 就天然安全
创建于 2026/1/24 更新于 2026/5/27