深入理解 JSON Web Token (JWT):完整指南

jwtauthenticationsecurityjson

JSON Web Token (JWT) 是一种紧凑的、URL 安全的方式,用于在两方之间传递声明。它已成为现代 Web 应用认证的标准。

什么是 JWT?

JWT 由三部分组成,用点号分隔:Header.Payload.Signature

头部 — 指定令牌类型和签名算法:

{

"alg": "HS256",

"typ": "JWT"

}

载荷 — 包含声明(用户数据和元数据):

{

"sub": "1234567890",

"name": "张三",

"email": "zhangsan@example.com",

"role": "admin",

"iat": 1516239022,

"exp": 1516242622

}

签名 — 确保令牌未被篡改。

JWT 使用场景

  • 身份认证 — 登录后发放 JWT,客户端随每个请求发送
  • 信息交换 — 在两方之间安全传输数据
  • 单点登录 (SSO) — 在多个服务之间共享认证
  • 常用声明字段

  • iss — 令牌签发者
  • sub — 主题(通常是用户 ID)
  • aud — 受众(预期接收者)
  • exp — 过期时间
  • iat — 签发时间
  • nbf — 生效时间
  • 安全最佳实践

  • 不要存储敏感数据 — 载荷是 base64 编码,不是加密
  • 使用强密钥 — HS256 至少使用 256 位密钥
  • 设置短过期时间 — 访问令牌通常 15 分钟
  • 使用 HTTPS — 始终通过加密连接传输令牌
  • 验证所有声明 — 检查签发者、受众和过期时间
  • JWT 与 Session Cookie

    JWT 是无状态的(服务器不需要存储会话数据),非常适合微服务。Session Cookie 更适合单体应用。

    使用我们的 JSON 查看器 来检查和调试 JWT 载荷。

    相关工具