返回文章列表

JWT 解码+过期时间检查:exp、nbf、iat、iss、aud 怎么排查

围绕接口 401/403、Token 过期、Issuer/Audience 不匹配和 HMAC 验签,说明如何本地解码 JWT 并复核注册声明。

这个页面解决什么问题

排查 JWT 问题时,不要只看 payload 能不能解出来。还要看 exp 是否过期、nbf 是否尚未生效、iat 是否异常、iss/aud 是否和服务端期望一致,以及 HS256/384/512 签名是否通过。

推荐使用步骤

  1. 先去掉 Authorization: Bearer 前缀,只保留三段式 JWT,或直接粘贴完整 Bearer 文本。
  2. 查看 Header 的 alg 和 typ,警惕 alg=none 或和服务端配置不一致。
  3. 检查 exp、nbf、iat 的本地时间和相对状态,必要时设置时钟偏移分钟。
  4. 填写期望 iss 和 aud,对比当前 token 是否来自正确环境和应用。
  5. 如果是 HMAC 算法,输入测试密钥做签名校验;生产密钥不要粘贴到任何不可信页面。

输入输出示例

输入

Token payload 包含 sub=123、iss=gratia、aud=tool、exp=未来 1 小时、iat=当前时间;期望 iss 填 gratia。

输出

结果显示 Header、Payload、注册声明表、过期时间、本地时间、iss 匹配状态;未填密钥时提示仅解码未验签。

关键检查点

时间声明

exp、nbf、iat 都是 UTC 秒,页面会换算成本地时间并显示相对状态,便于排查 401/403。

签名校验

填写 HMAC 密钥后可校验 HS256、HS384、HS512;没有密钥时只能说明“已解码”,不能说明“可信”。

iss/aud

多环境联调常见问题是 issuer 或 audience 配错,页面可填写期望值并提示匹配状态。

安全提醒

不要在不可信环境粘贴生产敏感 token;本页本地处理,但 token 本身仍可能代表账号权限。

和普通同类工具的区别

普通 JWT 解码器只展示 JSON,这个页面把时间状态、iss/aud 对比、HMAC 验签、Bearer 复制和注册声明表放在一个排查流程里。

FAQ

JWT 会发送到服务器吗?

不会。解码、时间检查和 HMAC 验签都在浏览器本地执行。

为什么解码成功不代表 token 有效?

JWT payload 本来就是 Base64URL,可被任何人读取;只有签名、时间和声明都通过才更接近有效。

支持 RS256 验签吗?

当前重点支持 HMAC 系列。RS256 需要导入公钥格式,后续可继续扩展。

过期判断按哪个时区?

JWT 时间戳是 UTC 秒,页面会换算成本地时间并显示还有多久或已过多久。

相关工具链