· 全部指南
JWT 是什么
JSON Web Token (JWT) 是一种紧凑的字符串格式,常用于登录态、API 授权与微服务间传递声明。典型 JWT 由三段 Base64URL 片段组成:Header(算法与类型)、Payload(声明,如用户 ID 与过期时间 exp)、Signature(签名,用于验证未被篡改)。
在 Towalles 的 jwt-decoder 中,你可以在浏览器本地粘贴 Token,立即查看 Header 与 Payload 的 JSON 内容。我们不会把 Token 上传到服务器——这对调试开发环境、检查过期时间与排查「为什么 401」非常有用。
解码 ≠ 验证
任何人都可以 Base64 解码 JWT 的 Header 与 Payload,因此 Payload 里不应存放密码、完整信用卡号等敏感秘密。签名段的存在是为了让服务端用密钥或公钥验证 Token 是否由可信方签发且未被修改。
常见误区:「我在前端解码了 JWT,看到 role: admin,所以用户是管理员。」这是错误的——攻击者可以伪造 Payload 并重新编码(除非你的应用错误地只解码不验签)。正确做法:在服务端用密钥/公钥完整验证签名、exp、aud、iss 等声明。
开发调试建议
检查 exp 是否已过期;注意时钟偏差。确认 alg 是否为预期算法(避免 alg:none 或算法降级攻击)。对比 iss/aud 是否匹配你的服务。若使用 HS256,密钥只保存在服务端;jwt-generator 仅适合本地联调,勿在生产前端暴露密钥。
配合 hash-generator、hmac-generator 理解签名与 HMAC 的区别:JWT 签名是结构化协议,HMAC 是通用消息认证。需要 API Webhook 校验时可参考 hmac-generator。
隐私与合规
即使工具在本地处理,也不要在录屏、日志或工单里泄露生产 Token。Rotate 密钥、缩短 access token 寿命、敏感操作用 refresh token 或 step-up 认证。Towalles 工具页提供教程与 FAQ,帮助团队统一安全基线。
API 验签清单
任何接受 JWT 的请求:用正确密钥集验签,拒绝 alg:none 与意外算法,校验 exp/nbf(含时钟偏移),匹配 iss/aud。解码工具只帮人排障,不能当鉴权。
常见事故
- 前端不验签就信任
role。 - HS256 密钥打进移动端包。
- 预发误收生产 issuer。
- 长效 access token 贴进工单。
定期轮换签名密钥,旧密钥仅短重叠期保留。多服务验签时优先非对称算法。
本地流程
- 用非生产 token 在 jwt-decoder 复现。
- 确认 header 算法与 claims。
- 修复服务端校验或时钟。
- 若真实 token 已暴露,作废会话。
验签属于服务端
前端解码用于调试体验与查看非机密声明。授权决策必须在可信服务端完成验签、audience 校验与时钟偏差处理。拒绝 alg: none 与意外的算法切换。
声明卫生
尽可能不要把 PII 放进 JWT。优先不透明标识 + 服务端查询。浏览器里短 exp 加刷新,优于长期 bearer。
事故习惯
若生产 token 被贴进工单,立刻轮换。让团队理解:jwt-decoder 可见 ≠ 可信。
库的选择
使用带明确算法白名单的维护中 JWT 库。禁用 none 与意外的非对称/对称混淆。添加提交恶意 header 的测试。
JWT 加固清单
动生产前先写操作程序:输入、期望输出、负责人与回滚。Towalles 上的工具便于本地检查样例,不能替代变更控制。
前置条件
- 有代表失败案例的脱敏 fixture。
- 清楚谁是真相来源(应用、网关、CMS 或网络设备)。
- 能在非生产环境或用合成数据复现问题。
步骤
- 用 fixture 复现,记录精确命令或 UI 路径。
- 按需用格式化、哈希或解析工具与已知正确样例对照。
- 做最小修复;同一变更里避免顺手重构。
- 补充回归测试或清单项,避免下一任 on-call 重复踩坑。
- 更新 runbook:症状 → 检查 → 修复。
善后
观察 24–72 小时错误率与支持工单。若做过一次性数据修复,安排后续防止复发。工单里保留截图与哈希,不要留真实密钥。
反模式
- 把生产密钥贴到公开页面「只是看一下」。
- 上线却不写回滚说明。
- 把本地绿色演示当成多区域生产的证明。