JWT 全面指南:结构、安全性与在线解码实战
JSON Web Token (JWT) 是一种基于 JSON 的开放标准 (RFC 7519),旨在跨多个系统安全地传输声明 (Claims)。由于其轻量化、自包含的特点,JWT 已成为现代身份验证 (Authentication) 与授权 (Authorization) 的首选方案。
1. JWT 的核心结构
一个标准的 JWT 令牌由三部分组成,通过点号 (
.
) 分隔:
- Header (头部): 包含令牌类型 (JWT) 和使用的签名算法(如 HS256 或 RS256)。
-
Payload (载荷):
存放核心业务数据(声明),如用户 ID (
sub)、过期时间 (exp) 和发布时间 (iat)。 - Signature (签名): 用于验证数据是否被篡改。
2. 常见标准载荷说明
-
iss(Issuer):令牌签发者。 -
sub(Subject):令牌所面向的用户 ID。 -
exp(Expiration Time):令牌过期时间戳。 -
iat(Issued At):令牌签发时间戳。 -
jti(JWT ID):令牌的唯一标识符。
3. 安全性警示:不要在 Payload 中存放秘密!
这是一个极其常见的误区: JWT 的 Header 和 Payload 仅经过 Base64 编码,并未加密。 任何人只要拿到了您的 JWT,都可以通过本工具读取其中的所有内容。因此,绝不能在 Payload 中存放密码、信用卡号或任何敏感隐私数据。
4. 如何使用本工具解决调试难题
场景一:Token 过期排查。
当后端返回 401 错误时,将 Token 粘贴到本工具,查看
exp
字段。如果该时间早于当前时间,说明 Token 已失效。
场景二:签名防篡改测试。 在“验证签名”框输入您已知的 Secret,如果提示“签名有效”,则说明您的签名逻辑完全正确。
常见问题解答 (FAQ)
Q: 为什么我修改了 Payload 之后,签名就失效了?
A: 签名是基于 Header 和 Payload
共同生成的。任何对这两部分的微小改动都会导致重新计算出的签名与原签名不匹配。
Q: WebUtils 的 JWT 解码器会保存我的 Token 吗?
A:
绝对不会。本工具完全运行在您的浏览器沙箱内,不与后端服务器通信。您的令牌及其包含的所有数据均处于绝对私密状态。