无需上传、100% 本地处理、无需账户

JWT 解码器

粘贴 JWT 以查看其头部、负载和过期时间。不会发送到任何地方。不验证签名,仅用于查看。

JWT 解码器 的工作原理

JWT 解码器将 JSON Web Token 分为三个部分:头部、负载和签名,并将头部和负载显示为格式化的 JSON。解码在浏览器中通过 base64url 解码每个部分本地完成:你的令牌不会发送到任何服务器。工具不执行签名验证;它只向你显示令牌声明中的内容。

这种区别对于安全性很重要:看到解码后的 JWT 告诉你它包含哪些声明(用户 ID、过期时间、角色、范围),但不能确认令牌是由合法机构颁发的或没有被篡改。签名验证需要颁发者的公钥或共享密钥,你永远不应该将其粘贴到公共工具中。仅将此解码器用于检查和调试。

JWT 解码器 的分步使用说明

  1. 将完整的 JWT 字符串(三个点分隔的 base64url 段)粘贴到输入字段。
  2. 头部和负载部分立即显示为格式化的 JSON。
  3. 检查负载中的「exp」字段以查看过期时间戳(Unix 纪元秒数)。
  4. 签名段按原样显示;此工具不验证它。

常见使用场景

  • 调试身份验证问题的开发者需要读取 JWT 中的声明,以确认正确的范围和角色是否存在。
  • QA 工程师检查访问令牌的「exp」字段,以验证过期时间是否设置为预期的持续时间。
  • 安全审查员检查来自第三方服务的 JWT,以了解它编码哪些用户数据,然后再接受它。
  • 后端工程师通过检查令牌的「aud」(受众)声明是否与预期的 API 标识符匹配来排查 401 错误。

常见问题

此工具会验证 JWT 签名吗?

不会。工具只对头部和负载段进行 base64url 解码,以将其内容显示为 JSON。签名验证需要颁发者的密钥或公钥,你不应将其粘贴到这里。看起来有效的解码负载仍可能有无效的签名;始终使用受信任的 JWT 库在服务器端验证签名。

我在这里粘贴 JWT 令牌时会传输到任何服务器吗?

不会。解码是在浏览器的 JavaScript 引擎中完全运行的三次 atob 调用(或对原始字节的 TextDecoder)。你在这里粘贴的内容不会离开你的浏览器标签页。这是检查包含私人用户声明的 JWT 的唯一安全方式:完全本地,无网络请求。

头部、负载和签名段有什么区别?

JWT 有三个用点分隔的 base64url 编码段。头部标识用于签名令牌的算法(例如 HS256 或 RS256)。负载包含声明:关于主体的事实和附加元数据(过期时间、颁发者、受众、自定义声明)。签名是使用颁发者密钥从头部和负载计算出的加密值;它允许接收方验证令牌未被更改。

负载中的「exp」是什么意思?

「exp」声明是令牌的过期时间,表示为 Unix 时间戳(1970 年 1 月 1 日 UTC 以来的整数秒)。如果当前时间大于「exp」,令牌已过期,任何验证它的服务器都应拒绝它。此工具显示原始数值;你可以使用此站点上的时间戳工具进行转换。「已过期」或「有效」的标记是将该数值与你自己设备的时钟进行比较得出的,因此如果设备时间不准,判断结果也会随之出错。这只是一个参考指示,绝不能替代真正验证签名的服务器。

可以用此工具解码不透明令牌或引用令牌吗?

不能。不透明令牌(有时称为引用令牌)是不携带任何用户数据的随机字符串;它们必须发送到颁发者的自省端点才能检索相关声明。此工具仅适用于标准三部分格式的自包含 JWT。