Toolverse

JWT 解码器

粘贴一个 JSON Web Token,即可以格式化的 JSON 形式读取其头部和载荷。时间戳声明会以可读的 UTC 日期显示。解码过程在你的浏览器中完成。

此工具仅解码令牌——不会验证签名。切勿将解码后的令牌视为身份验证的证明。

时间戳声明(UTC)

iat
2018-01-18T01:30:22.000Z

使用方法

将 JSON Web Token 粘贴到输入框中。一个 JWT 由三段 base64url 编码的内容用点号连接而成——依次是头部、载荷和签名。此工具会按点号拆分令牌,并将前两段进行 base64url 解码,转换为可读的、格式化的 JSON,方便你并排查看。 头部描述了该令牌的生成方式:签名算法(例如 HS256 或 RS256)以及令牌类型。载荷则携带各项声明——即令牌所表达的实际内容。一个用于已登录用户的令牌通常会包含主题(令牌所指的对象)、签发者(签发该令牌的一方)和过期时间,此外还可能包含应用添加的自定义声明。 时间戳声明是最容易被误读的部分。标准的时间声明——iat(签发时间)、exp(过期时间)和 nbf(生效时间)——都以 Unix epoch 以来的秒数存储,单凭肉眼很难看懂。此工具会将它们逐一转换为格式化的 UTC 日期,让你立即看出令牌是否已经过期,或是否尚未生效。 解码不等于验证,两者的区别很重要。任何拿到 JWT 的人都能读取其头部和载荷,因为这些部分只是经过编码,而非加密。只有通过签名密钥校验签名,才能证明令牌真实有效、未被篡改。此工具刻意只做读取;在你的服务器上验证签名之前,切勿仅凭解码后的声明做出任何安全决策。 所有操作都完全在你的浏览器中运行,因此你粘贴的令牌永远不会被上传。这使得该解码器可以放心用于日常场景:调试身份验证流程、排查会话被拒绝的原因,或者确认你的身份提供商具体签发了哪些声明。

常见问题

这个工具会验证签名吗?
不会。它只解码头部和载荷,方便你阅读。验证 JWT 需要签名密钥或公钥,而此工具从不会索要这些信息。请勿将解码后的令牌视为已通过身份验证。
exp、iat 和 nbf 分别是什么?
它们是以 Unix epoch 以来的秒数表示的标准时间声明:iat(签发时间)、nbf(生效时间)和 exp(过期时间)。此工具会为你将它们转换为 UTC 日期。
我的令牌会被发送到别处吗?
不会。解码完全在你的浏览器中进行,令牌不会被上传。不过,仍建议避免将生产环境的令牌粘贴到任何在线工具中。
为什么不需要密码就能读取载荷?
因为 JWT 是经过编码而非加密的。头部和载荷只是进行了 base64url 编码——这是一种任何人都能解码的可逆格式——因此无需任何密钥即可完全读取其内容。签名才是安全层:它并不隐藏数据,而是证明数据未被篡改。正因如此,切勿在 JWT 载荷中放入任何机密信息;应将其中的一切内容都视为公开可见。