JWT解析工具

查看 JWT 的 Header、Payload 和签发、生效、到期时间,明确展示签名未验证状态。

工具资源加载中...

JWT 解析工具介绍

小K工具的 JWT 解析器可以读取三段式 JSON Web Token,解码 Base64URL 格式的 Header 和 Payload,以缩进 JSON 展示头部和载荷,提取 iat、nbf、exp 时间声明,并显示真实的签名状态。适合接口调试、授权参数排查以及学习 JWT 的基本结构。

本工具在浏览器中解析令牌,不请求目标接口,也不接收密钥。对于带签名的令牌,结果始终标明“未验证”;对于 alg=none 的演示令牌,则标明“未签名”。任何解析结果都不能替代服务端的身份认证和权限判断。

查看 Header 与 Payload

严格读取 Base64URL 和 UTF-8 JSON 对象,展示算法声明与完整载荷内容。

对照三个时间声明

把 Unix 秒数转换为 UTC 时间,分别展示签发、生效和到期状态。

保存解析报告

将头部、载荷、时间信息与签名状态一并复制,或导出 TXT 供调试对照。

JWT 解析器使用步骤

  1. 将 JWT 粘贴到输入框,格式通常为 header.payload.signature。可以保留 HTTP 认证头中的 Bearer 前缀,工具会忽略前缀及令牌外侧的 ASCII 空白。
  2. 点击“解析 JWT”,查看 Header、Payload、算法声明和签名段字节数。分段内部的空白、填充符或非法字符会报错,不会自动修复。
  3. 在时间声明表中查看 iat、nbf、exp 的原始秒数、UTC 时间与状态。时间判断使用本次解析时的浏览器时钟,不会自动更新。
  4. 需要保存时点击“复制解析结果”或“导出 TXT”。修改令牌后旧结果会收起;“清空”会移除输入和结果。

“加载示例”会解析一个明确使用 alg=none 的未签名演示令牌,包含固定的历史时间,便于观察“已到期”状态。示例不能用于登录或访问业务接口。

Header、Payload 和 Signature 分别是什么?

Header 是头部 JSON,常见字段 alg 声明签名算法,typ 可描述令牌类型。Payload 是载荷 JSON,可以包含 sub、iss、aud 以及时间声明。前两段使用无填充的 Base64URL 表示,并不是加密数据。

Signature 是签名段。工具只检查其 Base64URL 格式并统计字节,不根据 alg 自动选择或执行验证算法。即使头部声明为 HS256、RS256 等算法,也不表示该算法已成功运行或签名有效。

例如载荷 {"sub":"demo","exp":1700003600} 的 exp 对应 2023-11-14 23:13:20 UTC。当解析时刻已达到该秒数,表格显示“已到期”;这只是时间数值的比较。

JWT 时间字段的判断规则

  • iat:签发时间。晚于当前浏览器时间时,显示签发时间在未来;不会据此自动判断认证有效性。
  • nbf:生效时间。当前时间小于该值时显示“尚未生效”,等于或超过时显示“已到生效时间”。
  • exp:到期时间。当前时间大于或等于该值时显示“已到期”,未提供时无法判断到期时间。

这三个字段按 JSON 数字类型的 Unix 秒数读取,支持小数;字符串类型的时间戳、null、数组或超出日期可表示范围的值,会在该行显示格式问题。展示精确到毫秒,不自动识别毫秒时间戳,不加入服务器时间偏差容忍。缺失字段保留“未提供”,其他载荷仍可查看。

适用场景与范围限制

可以用来查看接口返回的 JWT 文本、排查时间字段的秒与毫秒混用、检查头部声明以及对照载荷字段。Header 与 Payload 均要求是有效的 UTF-8 JSON 对象,单次令牌文本最多 256 KiB。五段式 JWE、未编码载荷、分离载荷和非 JSON 载荷不在解析范围内。

JSON 数字采用浏览器的双精度数值表示,不提供任意精度处理,小数可能发生舍入。为避免大整数或溢出数字被误显示,数值绝对值超过 9007199254740991 或解析后不是有限数时会拒绝解析;长编号建议由令牌生成方使用字符串保存。

如果只需要转换一个 Base64 文本片段,可使用 Base64 编码解码工具;对查询参数的百分号编码进行处理,可使用 URL 编码解码工具。

JWT 解析常见问答

为什么签名状态显示“未验证”?

解码 JSON 不需要签名密钥。本工具没有执行密钥校验、签发者与受众校验,也不检查服务端撤销记录,所以只能展示声明,不能报告签名有效或登录成功。

alg=none 是验证通过了吗?

不是。none 表示未签名形式,本工具只接受其签名段为空的结构,并明确标记“未签名”。它不提供来源或内容完整性的证明。

三段格式正确,为什么仍然无法解析?

分段可能含有不符合 JWT 规则的 Base64 字符、填充符、非零末尾填充位,或解码后不是 UTF-8 JSON 对象。工具要求 Header 包含非空字符串 alg;需要签名的算法声明还要求签名段非空。

Payload 显示尚未到期,是否表示令牌可用?

不表示。Payload 可以被任意改写后重新编码,时间判断还取决于本机时钟。令牌可用性必须由服务端结合签名、签发者、受众、撤销状态和业务权限验证。

为什么时间字段没有自动变成毫秒?

JWT 的 NumericDate 以 Unix 秒为单位。工具不会根据数字长度猜测单位,使用毫秒值可能显示异常年份或超出范围,需先核对生成方的字段约定。