JWT 解码器

粘贴一个 JWT(由三个用base64url编码、以点分隔的部分组成),解码器将显示头部信息、有效载荷及签名(均已解码并格式化呈现),同时显示检测到的算法类型、本地时间下的令牌有效期,以及nbf(签发前)、iat(签发日期)和exp(有效期)是否一致。若具备私钥或公钥,可选择进行签名验证。

如何解码 JWT

  1. 1

    粘贴令牌

    三个由 `.`(头部-有效载荷-签名)分隔的 Base64 URL 字符串。

  2. 2

    阅读已解码的头部信息

    算法、类型及密钥ID(`kid`)。该算法可指定验证所需的密钥类型。

  3. 3

    阅读有效载荷

    标准声明(`iss`、`sub`、`aud`、`exp`、`iat`、`nbf`、`jti`),以及您的应用签发的任何自定义声明。

  4. 4

    验证(可选)

    提供 HMAC 密钥(适用于HS256/384/512)或公钥(适用于RS256、ES256等)以验证签名的有效性。

JWT 的解剖结构

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFsaWNlIiwiaWF0IjoxNjAwMDAwMDAwfQ
.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

每个数据段均采用Base64URL(非标准Base64)编码:头部为 JSON 格式(如{"alg":"HS256","typ":"JWT"}),有效载荷为 JSON 格式(如{"sub":"1234567890","name":"Alice","iat":1600000000}),签名则为 HMAC 或RSA格式的header.payload签名。

标准声明(RFC 7519)

声明 名称 说明
iss 签发者 签发该令牌的一方
sub 主体 该令牌所针对的对象
aud 受众 该令牌的目标使用方
exp 过期时间 Unix 时间戳;超过此时间后将被拒绝
nbf 生效时间 Unix 时间戳;在此时间之前将被拒绝
iat 签发时间 令牌创建时的 Unix 时间戳
jti JWT 标识 用于吊销列表的唯一标识符

支持的算法

alg 密钥类型
HS256 / HS384 / HS512 共享 HMAC 密钥
RS256 / RS384 / RS512 RSA 公钥
ES256 / ES384 ECDSA 公钥
PS256 / PS384 RSA-PSS 公钥
EdDSA / Ed25519 爱德华兹曲线
none 切勿信任此项,未签名的令牌

alg: none 隐患

早期的 JWT 库允许 "alg": "none" 令牌,并天真地将其视为有效。请务必:

  • 将应用程序所接受的算法列入白名单。
  • 无条件拒绝 alg: none
  • 当验证代码预期为 RS256 时,拒绝 alg: HS256(即“算法混淆”攻击)。

JWT 不是什么

  • 未加密。 头部与有效载荷均采用 base64 编码,可被轻易解码。切勿在未用 JWE 封装的情况下将机密信息放入 JWT。
  • 默认不可吊销。 JWT 一经签发,即在 exp 之前始终有效。若需吊销,则要使用黑名单,或采用短过期时间加刷新令牌的方案。
  • 并非任何场景下都能替代会话 Cookie。 存储在服务器端的不透明令牌往往更简单、更安全。

常见错误

  • 信任头部。 kidalg 来自令牌本身。被攻陷的服务器可任意设置它们,因此务必对照固定列表进行校验。
  • 忽略 nbfiat 的偏差。 时钟漂移可能导致 iat > now。请预留少量容差(30–60 秒)。
  • 记录完整的 JWT。 有效载荷常包含用户 ID、邮箱、权限,这些 PII 不应输出到 stdout。
  • 将 HS256 与弱密钥搭配使用。 长度为 16 个字符的密钥可在几分钟内被暴力破解。请至少使用 256 位的随机熵。

常见问题

不。解码过程在您的浏览器中执行。令牌始终存储于本地,这一点至关重要,因为JWT通常包含会话数据、用户ID及权限信息。

是的。如果您粘贴共享 HMAC 密钥或PEM格式加密的公钥,验证过程将在您的浏览器中完成,该密钥绝不会离开您的设备。

这意味着该令牌未签名。在生产环境中切勿接受此类令牌,它们极易被伪造。多个备受关注的漏洞(CVE)正是针对默认接受 alg: none 令牌的库而发现的。

JWT 签名仅证明真实性,而非保密性。报头与有效载荷均采用可逆的Base64URL编码;若需确保隐私安全,请在 JWT 周围使用 JWE(JSON 网络加密)或避免在有效载荷中包含敏感数据。

相关工具

此工具还提供其他语言版本