Header
包含 alg(算法)、typ、kid 等字段。除非在复盘攻击,请拒绝 alg: none。
JWT 学习路径
本教程讲解 JWT 的组成结构,演示如何使用 JWTSecrets 在本地安全地解码 Token,并给出在生产环境应当自动化的安全校验清单。
JWT 由三个使用 Base64URL 编码的片段组成,并以点号分隔。Header 定义元信息,Payload 承载声明(Claims),Signature 用于保证完整性与防篡改。
包含 alg(算法)、typ、kid 等字段。除非在复盘攻击,请拒绝 alg: none。
包含注册声明如 iss、sub、aud、exp、nbf,以及自定义范围与角色。务必把所有字段视为不可信输入。
通过 HMAC(如 HS256)或非对称算法(如 RS256、ES256)保证完整性。验证需要正确的密钥或 JWKS。
exp、过长有效期、未来的 nbf、以及弱签名等问题。可在解码器 URL 末尾追加 #t= + Base64 编码的 Token,以在加载时自动预填并在本地解析。
解码只是第一步。你需要在 API 层对声明进行自动化校验,并在调试时配合人工审查,确保与认证策略一致。
iss 与你的身份提供方一致。aud 能够匹配消费 Token 的应用或 API。exp 与 nbf 符合时钟偏差与密钥轮换策略。要保护端到端会话,除了解码,还需包含签名验证、密钥轮换与监控告警。
jti(Token ID)用于撤销与黑名单检测。sub、iss 与决策结果的结构化日志。aud 触发告警。不需要。解码 Header 与 Payload 不依赖签名密钥;但验证签名需要密钥,因此 JWTSecrets 企业版可与托管 HSM 集成。
尽量避免。建议将会话 Token 放在 HttpOnly Cookie 中以防 XSS 访问,并对刷新 Token 进行频繁轮换。
exp 应该设置多长?
⌃
交互式登录建议有效期不超过 15 分钟,并配合自动刷新。机器 Token 的有效期应更短,并依赖客户端凭据进行重新签发。