「decoder un JWT」是什么意思?
解码 JWT (「jwt decode」「decode jwt online」)就是按两个点把字符串切开,再把每一段用 Base64URL 解码,还原出原始 JSON。不需要任何密钥:头部与 payload 只是被编码,并没有被加密。这正是「jwt payload decoder」或「decode jwt without verify」背后的意图——看看令牌里有什么,而不是宣称它可信。
请注意区分这两种操作。 读取 JWT 本身什么都证明不了:任何人都能造出一个 payload 好看的令牌,再用他自己的密钥签名。 验证 签名才能证明内容没有被第三方篡改。一个不做签名校验就显示「admin: true」的解码器,给你讲的是故事,不是事实。
JWT 的三个分段
字符串正好被两个点分成三部分: header.payload.signature。头部至少包含 alg 和 typ,有时还有 kid 用来指明用的是哪把密钥。payload 中则是 claims,即注册表由 IANA 维护的键值对。签名覆盖按原样拼接的前两段——空格或字符哪怕只改动一处,比对就会失败。
难点在于这些分段用的是 Base64URL 而不是 Base64:加号变成连字符,斜杠变成下划线,而填充 = 则会消失。因此标准 Base64 解码器处理有效的 JWT 会失败。参考标签页中的「Base64URL 与标准 Base64 的对比」表格列出的正是这些替换。
如何验证签名:HS256、RS256、ES256
对于 HMAC 算法——HS256、HS384、HS512——同一个密钥既用于签名也用于验证:工具会重新计算 HMAC(secret, base64url(header) + "." + base64url(payload)) 并把结果与携带的签名比对。这是最常见的情况,也是最危险的:任何持有该密钥的服务都能签发令牌。一个不足 32 字节、又在各环境间复用的密钥,足以让整条链路失守。
对于 非对称算法 ——RS256、RS384、RS512、ES256、ES384、ES512、PS256——验证只需要公钥,因此可以校验第三方签发的令牌,而不必共享其签名密钥。把 PEM 格式的公钥粘贴进来 -----BEGIN PUBLIC KEY----- (SPKI);OpenSSL 导出的原始结果可直接使用。ES256 的签名是原始的 r||s 格式,正是 WebCrypto 所要求的。
最后还要当心 alg confusion :如果你的服务期望 RS256,却接受头部声明 HS256 的令牌,攻击者就能用公钥(此时它成了 HMAC 密钥)签名并通过校验。请在服务端固定期望的算法,绝不要从令牌本身去读它。
exp、iat、nbf:容易踩坑的时间戳
这三个 claim 是 Unix 秒,既没有毫秒也没有时区: iat 1516239022 表示 2018-01-17T21:30:22Z。两个错误反复出现:与毫秒级日期比较(数值大一万倍),以及把时间戳当作本地时间而不是 UTC。「过期时间」标签页支持双向转换,会显示 ISO 8601、本地日期以及剩余或已过时长——精确到秒,一眼就能看出令牌「是否已过期」。
延长有效期并不会提高安全性:把 exp 往后推只会改变显示的值,不会改变签名。如果必须重新签发,请用密钥或私钥为令牌重新签名——这正是「编码」标签页的作用。
Base64URL:为什么标准解码器会失败
Base64URL(RFC 4648 §5)使用的字母表是 A-Z a-z 0-9 - _ ,并且不接受填充。20 个字符的 payload 移除 = 后长度往往不是 4 的倍数:这很正常,并非数据损坏。字符 - 和 _ 对人眼来说有歧义,这解释了反馈中一半的「坏令牌」问题。我们的解码器接受两种字母表、大小写混用、可选填充以及前缀 Bearer.
安全:JWT 做不到的事
JWT 既不提供机密性,也不提供吊销能力。payload 任何人都能读:永远不要往里放邮箱、内部角色或任何你不愿明文发送的个人信息。而且已签名的令牌在 exp 之前一直有效,即便已经退出登录——需要吊销列表,或者由 jti 在服务端跟踪,或者用较短的有效期配合 refresh token。一个好习惯: exp 要短(10 到 15 分钟), iat 要受控, nbf 对齐到 iat, aud 和 iss 收到时都要校验。
推荐人群
前后端开发者(OAuth 2.0、OpenID Connect、REST API)、集成商与 DevOps(身份基础设施、JWKS、密钥轮换)、测试与渗透测试人员(改写 claim、alg confusion、过期)、系统管理员(排查莫名其妙的 401)、学生(理解 Base64URL 与 WebCrypto),以及任何需要 在线 JWT 解码器 的人:快速、完整、私密——再配合 Base64 编码解码器、URL 编码解码器 和 JSON 格式化器.