本地处理
DEVDESK / GUIDES

JWT 解码后能信任吗?检查签名边界与过期时间

JWT 能解码出用户 ID,不代表它来自可信服务。先把“读取内容”和“接受凭据”分开,再用时间戳工具检查声明。本站 JWT 工具只解码,不验证签名。

打开工具:JWT 解码

1. 先检查 Token 结构

常见的签名 JWT 由 Header、Payload 和 Signature 三段组成,以英文句点连接。前两段是 Base64URL 编码的 JSON。本站要求三段输入;五段的加密 JWE 不适用此解码器。

base64url(header).base64url(payload).signature

2. 使用演示 Token 读取声明

打开 JWT 工具,点击「示例」再解码,查看 Header 和 Payload。下面只是便于阅读的 Payload 示例,不能把这段 JSON 当成完整 Token 粘贴。

sub、iss 和 aud 的具体约定来自你的认证系统。即使它们看起来正确,也要通过服务端校验后才能据此授予权限。

{
  "sub": "demo-user",
  "iss": "https://example.com",
  "aud": "demo-api",
  "iat": 1788768000,
  "exp": 1788771600
}

3. 把 exp 按秒转换

exp、iat、nbf 的 NumericDate 使用自 Unix 起点经过的秒数。将 1788771600 放入时间戳工具并选择「秒」,应得到 2026-09-07T09:00:00.000Z。示例中 exp 比 iat 晚一小时。

是否允许少量时钟偏差由实际验证器决定。解码器显示的时间只能帮助排查,不能替代认证服务器判断是否接受该凭据。

4. 明确解码与验签的差别

任何人都能编码一段包含管理员身份的 JSON。服务端需要使用可信密钥和允许的算法验证签名,并校验发行者、接收方、时间及业务权限;不能根据 Token 自己声明的算法就无条件信任它。

5. 排查登录问题时保留正确证据

如果页面提示未授权,记录响应状态、请求时间和服务端错误类别,比较 exp 与服务器时钟。不要通过修改 Payload 或延长 exp 来“修复”真实登录,修改会影响签名。

  • 确认解码成功与签名有效没有被混为一谈。
  • 确认秒与毫秒、UTC 与本地显示没有混淆。
  • 分享排查材料时移除完整登录 Token,使用演示数据复现。

继续动手验证