反馈

JWT解码验证


        

        

签名校验
解码与验签全部在浏览器本地完成,Token 与密钥不会上传。相关: Base64 编解码 · Base64 与文件互转 · 时间戳转换 · HMAC 计算 · 文字加解密

📖 工具说明

1. 这个工具能做什么?

调试 OAuth2 / SSO / API 鉴权时常用的三件事,都在浏览器本地完成:

时间声明(exp / nbf / iat)会换算成本地时间并给出「还有多久过期 / 多久前签发」。


2. 使用步骤

  1. 粘贴 Token:贴进上方输入框,边打边解码。
  2. 看 Payload:右侧是解码后的声明;下方表格逐条列出 exp / nbf / iat 的本地时间和状态,以及 iss / sub / aud 等标准字段和自定义字段。
  3. 验签(可选):选择密钥格式 —— HS* 填共享 Secret(文本或 Base64),RS/ES/PS* 粘贴 PEM 公钥或 JWK —— 点「校验签名」。
  4. 生成(可选):切到「生成 JWT」标签,选算法、填 Secret、编辑 Payload,可勾选自动补 iat / exp。

3. 常见声明字段

字段 全称 含义
iss Issuer 签发者,通常是认证服务器地址
sub Subject 主体,一般是用户 ID
aud Audience 接收方,Token 面向的服务
exp Expiration Time 过期时间(Unix 秒),过期后应拒绝
nbf Not Before 生效时间,在此之前无效
iat Issued At 签发时间
jti JWT ID 令牌唯一标识,用于防重放

4. 常见问题(FAQ)

Q:验签需要私钥吗? A:不需要。HMAC(HS*)用的是签发和验证共用的同一个 Secret;RSA / ECDSA(RS/ES/PS*)验签只需要公钥,私钥永远不要贴到任何在线工具。

Q:alg: none 是什么? A:表示 Token 未签名。工具会解码它但会红字标注 —— 生产系统必须拒绝 none,否则任何人都能伪造。

Q:为什么显示"签名不匹配"? A:常见原因:Secret / 公钥不对;Header 里的 alg 与你选的密钥格式不一致;Token 被截断或多了空格;HS* 的 Secret 实际是 Base64 编码的(改选「Secret Base64」)。

Q:时间为什么和我预期差几小时? A:exp / iat 是 UTC 的 Unix 时间戳,工具按你本机时区换算显示。服务端判断过期用的是 UTC 秒数,不受时区影响。

Q:数据会上传吗? A:不会。解码、验签、签发全部用浏览器的 Web Crypto 在本地完成,Token 和密钥不发送到任何服务器。


5. 相关工具

Base64 编解码 · Base64 与文件互转 · 时间戳转换 · HMAC 计算 · 文字加解密

📖 了解原理

📖 相关推荐