JWT 解析器

解析 JWT Header 与 Payload

解析 JWT 内容,不校验签名
输入
未填写 Secret,签名仅保留原值,修改内容后通常无法验签通过
Header
Payload

工具说明

关于 JWT 解析器

JWT Parser 用来解码 JSON Web Token 的 Header 和 Payload,查看 alg、typ、签名状态以及 iss、sub、aud、iat、nbf、exp 等常见 claims。

此工具在浏览器本地解析令牌,并可使用本地 HMAC 密钥重新签名编辑后的 Header/Payload;它不会把令牌上传到 wetool.site。

如何使用 JWT Parser

  1. 粘贴完整 JWT,格式应为 header.payload.signature 三段。
  2. 点击 Decode,查看 Header、Payload 和常见声明摘要。
  3. 检查 exp、nbf、iat 是否符合预期;它们通常是以秒为单位的 Unix 时间。
  4. 如果要测试编辑后的 HMAC token,输入 secret 后会在浏览器本地重新签名。

常见使用场景

  • 调试登录态时快速确认 token 是否已经过期或尚未生效。
  • 检查 alg、typ、iss、aud、sub 是否与 API 网关或后端服务约定一致。
  • 把 payload 格式化成可读 JSON,定位 scope、role、tenant_id 等业务字段。
  • 修改测试 token 的 claim 后,用本地 secret 重新签名用于开发环境验证。

JWT 结构、claims 和签名边界

JWT 通常由三个 Base64URL 片段组成: Header、Payload、Signature。解码 Header/Payload 不需要 secret,但判断签名可信必须在服务端或持有正确密钥的环境中完成。

  • Header: 通常包含 alg 和 typ,说明签名算法和 token 类型。
  • Payload: 保存 claims,例如 iss、sub、aud、iat、nbf、exp 和业务字段。
  • 签名:用于防止 Header/Payload 被篡改;只解码令牌不代表签名有效。
  • 时间 claims: iat、nbf、exp 通常是 Unix 秒,不是毫秒。

JWT 解析常见问题

Decode JWT 等于验证 JWT 吗?
不等于。Decode 只是读取 Header 和 Payload;验证需要用正确密钥或公钥检查 signature。
为什么 payload 能直接看到?
JWT 的 Header 和 Payload 是 Base64URL 编码,不是加密。不要把秘密信息放进普通 JWT payload。
exp、iat、nbf 是什么?
exp 是过期时间,iat 是签发时间,nbf 是生效时间,常见格式是 Unix 秒。
修改 Payload 后 token 还能用吗?
没有重新签名通常不能用。此工具在填写 HMAC secret 后可本地重新签名测试 token。
JWT 会上传吗?
不会。解码、编辑和 HMAC 重新签名都在浏览器本地运行,token 不会上传到 wetool.site。

JWT 与 Session 的区别

会话通常把状态保存在服务端,只给浏览器一个会话 ID。JWT 把声明放在令牌中,适合跨服务传递身份信息,但更需要谨慎控制过期时间、签名密钥和载荷内容。

JWT 签名验证与 alg 排错清单

JWT 能被解码不代表它可信。真正的验证必须确认算法、密钥来源、issuer、audience 和 signature 都符合后端策略。

  • 不要根据 token 自带的 alg 盲目选择验证算法;服务端应使用配置好的允许算法列表。
  • 看到 alg=none、HS256/RS256 混用或 kid 指向外部地址时,要按高风险配置处理。
  • 本工具适合查看和生成 HMAC 测试 token,生产验签仍应在后端或认证网关完成。

exp、nbf、iat 时间排错

JWT 时间 claim 通常是 Unix 秒。过期判断异常时,先排除秒/毫秒、时钟偏移和时区显示问题。

  • exp 早于当前 Unix 时间(秒)时令牌已过期;nbf 晚于当前时间时令牌尚未生效。
  • 把 13 位毫秒误当作秒会得到遥远未来时间,把 10 位秒误当作毫秒会落到 1970 年附近。
  • 服务端之间应保持 NTP 同步,并允许少量 clock skew,但不要用过长宽限期掩盖配置问题。