JWT 解码器

粘贴一个 JWT,查看解码后的 header 和 payload,并附带过期时间等标准声明的解释。不会上传任何内容,签名永远不会被验证或与密钥进行核对。

Header


        

Payload


        

工作原理

一个 JWT 由三个用点连接的 Base64URL 片段组成:header、payload、signature。工具按点进行拆分,然后通过把 URL 安全字母表映射回标准 Base64(- 变回 +_ 变回 /),恢复 JWT 省略的填充字符,运行 atob(),再用 TextDecoder 将字节解码为 UTF-8,从而解码前两个片段。每个片段随后都会经过 JSON.parse 处理并进行格式化输出。标准声明(isssubaudexpnbfiatjti)会被赋予易读的标签,Unix 时间戳会转换成可读日期,exp 会与你的系统时钟进行比较,从而告诉你该令牌是否已过期。第三段——签名——则完全不会被解析。

这正是该工具严格遵循的区别:解码不是验证。任何 JWT 的 payload 都可以被任何人读取,它是编码过的,而不是加密的。要证明令牌真实有效,需要重新计算签名,这需要签名密钥(对于 HMAC)或颁发者的密钥(对于 RSA/ECDSA)。该工具刻意不提供「粘贴你的密钥」输入框:习惯性地把生产环境的签名密钥粘贴到网页中,是任何便利性都无法证明其合理的风险,而且验证本来就应该在你的服务器上完成。永远不要信任一个你没有在服务器端验证过的解码声明。

一切都在这个页面自身的 JavaScript 中运行,使用 atob 和文本解码 API。打开开发者工具的 Network 标签页,粘贴一个真实令牌观察一下:不会发出任何请求,令牌永远不会离开浏览器标签页。