JWT 解析器
解析 JWT Token 的 Header、Payload、签名,检查过期时间,本地解析。
{
"alg": "HS256",
"typ": "JWT"
}{
"sub": "1234567890",
"name": "HyperGrad",
"iat": 1737440000,
"exp": 1737526400
}JWT 解析器
JWT(JSON Web Token,RFC 7519)是一种用于在网络应用之间安全传递声明的开放标准,常用于身份认证和信息交换。
JWT 由三部分组成:Header.Payload.Signature,用 . 分隔,
前两部分是 Base64Url 编码的 JSON,第三部分是用密钥计算的签名。
JWT 结构
- Header:声明 Token 类型和签名算法(如 HS256、RS256)。
- Payload:声明 Claims,包括标准声明(iss、sub、aud、exp、nbf、iat、jti)和自定义声明。
- Signature:用密钥对 Header + Payload 计算的签名,防篡改。
常见 Claims
iss:签发者(Issuer)sub:主题(Subject),通常是用户 IDaud:受众(Audience)exp:过期时间(Expiration),Unix 时间戳nbf:生效时间(Not Before)iat:签发时间(Issued At)jti:JWT 唯一 ID(防重放)
JWT 安全最佳实践
JWT 不是加密的——这是最常被误解的点。Header 和 Payload 只是 Base64Url 编码,任何人都能解码查看内容。JWT 保证的是完整性(防篡改),不是机密性。如果你想加密 Payload 内容,应使用 JWE(JSON Web Encryption)。因此,绝不要在 JWT 里放敏感信息(密码、身份证号、支付信息),因为它们相当于明文。
签名算法选择:HS256(HMAC-SHA256)使用对称密钥,签发和验证用同一密钥,适合单体应用;RS256(RSA-SHA256)使用非对称密钥,私钥签发、公钥验证,适合微服务架构——认证服务持有私钥签发 Token,其他服务只需公钥即可验证,无需共享密钥。生产环境推荐 RS256。务必禁用 none 算法,否则攻击者可伪造无签名 Token。
Token 生命周期:JWT 一旦签发,在 exp 过期前始终有效,无法主动撤销(除非维护黑名单)。因此 access token 过期时间应短(15-30 分钟),配合 refresh token(长期,可撤销)使用。重要操作(改密码、支付)应额外验证而非仅依赖 JWT。Token 存储位置也有讲究:存在 HttpOnly Cookie 可防 XSS 读取但需防 CSRF;存在 localStorage 方便但易受 XSS 攻击。根据威胁模型权衡。