跳到正文

JWT 解码

JWT Decoder

解出头部和载荷,按本地时间显示过期时刻,并用你给的密钥验证签名。

解码一个 JSON Web Token——头部、载荷和签名——解释每个标准声明的含义,并能用共享密钥、粘贴的密钥或签发方的 JWKS 验证签名。一切在标签页里发生:令牌本身从不发送到任何地方。

🔒 完全在你的浏览器里运行jwttokenauthdecode

令牌留在这个标签页里。

解码和验签都在你的浏览器里用 WebCrypto 完成。什么都不上传,这个页面也没有服务端。它唯一可能发出的请求,是对你自己输入的那个 JWKS URL 做一次 GET,那个请求带的只有这个 URL,绝不会带上令牌或密钥。

令牌

开头的 `Bearer ` 会替你去掉。

怎么用

  1. 粘贴令牌

    开头的 `Bearer ` 会替你去掉。头部、载荷和签名立刻拆开——没有按钮要按。

  2. 先读状态行

    已过期、尚未生效,或者在有效期内——按你的时钟计算。载荷表里的时间声明同时显示为 ISO 时间戳、你的本地时间和原始的 epoch 秒数。

  3. 要紧的话验证签名

    HS256/384/512 用共享密钥,非对称算法用 JWKS URL 或粘贴的密钥。解码证明不了任何真实性——只有签名检查才能。

常见问题

把生产环境的令牌粘到这里安全吗?

令牌在你的浏览器里解码,从不传输——这个页面没有服务端。它唯一可能发出的请求是对你输入的 JWKS URL 的一次 GET,携带的只有那个 URL。即便如此,一个在浏览器标签页里的令牌就是一个在屏幕上的令牌,所以要像对待密码一样对待它。

任何人都能读我的载荷?

是的。JWT 是签名的,不是加密的——载荷是 Base64URL,那是一种编码。永远不要把你不会放进 URL 的东西放进 JWT。这个页面粘贴一次演示的正是这一点。

签名验证通过了——这说明令牌是好的吗?

它说明令牌是由持有那把密钥的人签的,而且此后没有被改过。它对过期、受众、签发方或吊销什么都没说。状态行覆盖过期;其余的是你应用程序的活。

为什么它检查不了我的 ES256K 或 Ed448 令牌?

因为验证用的是浏览器的 WebCrypto,那些曲线不在里面。HS、RS、PS 和 ES 的 256/384/512 加上 Ed25519 是浏览器能做的;其他的报告为无法检查,而不是悄悄通过。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。