跳到正文
马克工具箱

JWT 在线解析

粘贴 JSON Web Token,即可查看头部和载荷、判断是否过期,并用密钥或公钥校验签名。全部在本地运行,生产环境的令牌不会发送到任何服务器。

在浏览器本地运行,输入的内容和文件都不会上传

解码不等于校验签名,任何人都能构造出包含任意内容的令牌。

使用步骤

  1. 粘贴令牌,带不带「Bearer 」前缀都可以,三段内容会用不同颜色标出。
  2. 查看解码后的头部和载荷,iat、nbf、exp 会显示为具体时间和相对时间。
  3. 校验签名:HS256/384/512 填写共享密钥,RS、PS、ES、EdDSA 粘贴 PEM 或 JWK 格式的公钥。
  4. 需要时复制解码后的 JSON。

参数说明

头部(Header)
令牌的元数据,通常包含 alg(签名算法)和 typ。kid 字段说明是用哪把密钥签名的。
载荷(Payload)
声明内容。标准字段有 sub(主体)、iss(签发方)、aud(受众)、iat(签发时间)、nbf(生效时间)、exp(过期时间),时间都是 Unix 秒。
签名
证明头部和载荷没有被篡改。校验需要密钥(HMAC)或签发方的公钥(RSA、ECDSA、EdDSA)。
密钥是 Base64 编码的
有些服务以 Base64 形式保存 HMAC 密钥,如果你拿到的是编码后的字符串就勾选此项。

常见字段

字段 含义 示例
sub 令牌所属主体(用户 ID) "1234567890"
iss 签发方 "https://accounts.example.com"
aud 接收方 "my-api"
exp 过期时间(Unix 秒) 1790427600
iat 签发时间(Unix 秒) 1790424000
nbf 生效时间(Unix 秒) 1790424000
jti 令牌唯一 ID,用于防重放 "a1b2c3"

示例

令牌 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c 解码后头部为 {"alg":"HS256","typ":"JWT"},载荷包含 sub、name 和 iat(2018 年 1 月 18 日)。使用密钥 your-256-bit-secret 可以校验通过。

常见问题

把生产环境的 JWT 粘贴到这里安全吗?

令牌由浏览器里的 JavaScript 解码,不会上传或记录。但仍请像对待密码一样对待访问令牌:在过期之前,持有有效令牌的人都能使用它。

能解码出来就说明令牌是真的吗?

不是。头部和载荷只是 Base64URL 编码,任何人都能读取或伪造。只有用正确的密钥校验签名通过,才能说明令牌确实由预期的一方签发。

密钥明明是对的,为什么校验失败?

检查密钥是否是 Base64 编码的、末尾有没有多余的空格或换行,以及头部的算法是否与签发方一致。令牌哪怕改动一个字符,签名也会失效。

alg 为 none 是什么意思?

表示令牌声称没有签名。除非明确需要,服务端必须拒绝这类令牌,历史上曾因为接受它导致过真实的认证绕过漏洞。

RS256 令牌的公钥从哪里获取?

身份提供方通常在 /.well-known/jwks.json 公布 JWKS 公钥集合,找到 kid 与令牌头部一致的那一把,以 JWK 格式粘贴到这里即可。

隐私说明

本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。

相关工具