JWT 解码器
粘贴一个 JWT(由三个用base64url编码、以点分隔的部分组成),解码器将显示头部信息、有效载荷及签名(均已解码并格式化呈现),同时显示检测到的算法类型、本地时间下的令牌有效期,以及nbf(签发前)、iat(签发日期)和exp(有效期)是否一致。若具备私钥或公钥,可选择进行签名验证。
如何解码 JWT
-
1
粘贴令牌
三个由 `.`(头部-有效载荷-签名)分隔的 Base64 URL 字符串。
-
2
阅读已解码的头部信息
算法、类型及密钥ID(`kid`)。该算法可指定验证所需的密钥类型。
-
3
阅读有效载荷
标准声明(`iss`、`sub`、`aud`、`exp`、`iat`、`nbf`、`jti`),以及您的应用签发的任何自定义声明。
-
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。 存储在服务器端的不透明令牌往往更简单、更安全。
常见错误
- 信任头部。
kid和alg来自令牌本身。被攻陷的服务器可任意设置它们,因此务必对照固定列表进行校验。 - 忽略
nbf和iat的偏差。 时钟漂移可能导致iat > now。请预留少量容差(30–60 秒)。 - 记录完整的 JWT。 有效载荷常包含用户 ID、邮箱、权限,这些 PII 不应输出到 stdout。
- 将 HS256 与弱密钥搭配使用。 长度为 16 个字符的密钥可在几分钟内被暴力破解。请至少使用 256 位的随机熵。
常见问题
不。解码过程在您的浏览器中执行。令牌始终存储于本地,这一点至关重要,因为JWT通常包含会话数据、用户ID及权限信息。
是的。如果您粘贴共享 HMAC 密钥或PEM格式加密的公钥,验证过程将在您的浏览器中完成,该密钥绝不会离开您的设备。
这意味着该令牌未签名。在生产环境中切勿接受此类令牌,它们极易被伪造。多个备受关注的漏洞(CVE)正是针对默认接受 alg: none 令牌的库而发现的。
JWT 签名仅证明真实性,而非保密性。报头与有效载荷均采用可逆的Base64URL编码;若需确保隐私安全,请在 JWT 周围使用 JWE(JSON 网络加密)或避免在有效载荷中包含敏感数据。
相关工具
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
邮箱验证器
验证邮箱地址:RFC 5322 语法检查、实时 MX 记录查询,并显示本地部分、域名和长度详情。不会发送任何邮件。
编辑器配置生成器
根据你的缩进样式与大小、行尾、字符集和空格规则生成 .editorconfig 文件,让不同集成开发环境(IDE)和编辑器的格式保持一致。
证书解码器
粘贴一张 X.509 PEM 证书,并查看解码后的字段:主体、颁发者、序列号、签名算法、有效期及主体备用名称(SAN)。
此工具还提供其他语言版本
- Decoder JWT [ID]
- Mã giải mã JWT [VI]
- Decodificador JWT [ES]
- Décodeur JWT [FR]
- JWT 해독기 [KO]
- JWT-decoder [NL]
- JWT-avkodare [SV]
- JWTデコーダ [JA]
- ตัวถอดรหัส JWT [TH]
- مُفكّك JWT [AR]
- JWT-Dekoder [DE]
- Dekoder JWT [PL]
- Decodificador JWT [PT]
- Decoder JWT [IT]
- Декодировщик JWT [RU]
- JWT Dekoderi [TR]
- JWT Decoder [EN]