JWT 解码
编程开发
在线解析 JWT Token,查看 Header 和 Payload 内容,支持过期时间检测。提供多种 JWT 样例,详细解释 JWT 结构和常见字段。适用于身份验证调试、API 认证排查、OAuth 令牌分析等场景
快捷样例点击加载 JWT Token 示例
JWT Token
工具介绍
JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在各方之间安全地传输信息。JWT 由三部分组成:
- Header:声明算法和类型,如 {"alg": "HS256", "typ": "JWT"}
- Payload:包含声明(Claims),如用户信息和权限
- Signature:签名用于验证消息在传输过程中未被篡改
本工具可在线解码 JWT Token,查看其 Header 和 Payload 内容,并检测过期时间。
标准声明字段
| 字段 | 名称 | 说明 |
|---|---|---|
| iss | Issuer | 签发者,标识 JWT 的签发方 |
| sub | Subject | 主题,标识 JWT 所面向的用户或实体 |
| aud | Audience | 受众,标识 JWT 的预期接收方 |
| exp | Expiration Time | 过期时间,JWT 必须在此时间后被拒绝 |
| nbf | Not Before | 生效时间,JWT 必须在此时间后才能被接受 |
| iat | Issued At | 签发时间,标识 JWT 的创建时间 |
| jti | JWT ID | 唯一标识符,用于防止 JWT 重放攻击 |
常见自定义字段
| 字段 | 说明 |
|---|---|
| name | 用户名称 |
| 电子邮箱 | |
| userId | 用户 ID |
| role | 用户角色 |
| roles | 角色列表 |
| permissions | 权限列表 |
| scope | 授权范围(OAuth) |
| deptId | 部门 ID |
使用场景
| 应用场景 | 说明 |
|---|---|
| 身份验证 | 用户登录后返回 JWT,后续请求携带该令牌进行认证 |
| 单点登录 (SSO) | 跨域/跨系统的身份验证,一次登录多处使用 |
| API 认证 | 保护 RESTful API 接口,验证请求来源的合法性 |
| 信息交换 | 在各方之间安全地传输经过签名的信息 |
| OAuth 2.0 | 作为 OAuth 2.0 的访问令牌(Access Token) |
| 调试排错 | 查看和验证 JWT 内容是否正确,排查认证问题 |
常见问题
JWT 和 Session 有什么区别?
JWT 是无状态的,服务端不存储会话信息,适合分布式系统;Session 需要在服务端存储,适合单体应用。JWT 可以自包含用户信息,减少数据库查询。
JWT 安全吗?
JWT 本身经过签名防篡改,但 Payload 是 Base64 编码而非加密,任何人都可解码。因此不要在 Payload 中存储敏感信息(如密码),并始终通过 HTTPS 传输。
如何验证 JWT 签名?
使用与签发时相同的密钥和算法重新计算签名,与 Token 中的签名对比。HMAC 使用对称密钥,RSA/ECDSA 使用公钥验证。本工具仅解码不验证签名。
JWT 过期了怎么办?
客户端应检测 exp 字段,过期前主动刷新。通常配合 Refresh Token 机制:Access Token 短期有效(如 15 分钟),Refresh Token 长期有效用于获取新的 Access Token。
JWT 可以注销吗?
JWT 本身无法主动注销(无状态特性)。解决方案:1) 使用黑名单存储已注销的 jti;2) 设置较短的过期时间;3) 使用 Refresh Token 轮换机制。
alg 字段有哪些值?
常见算法:HS256/HS384/HS512(HMAC 对称加密)、RS256/RS384/RS512(RSA 非对称加密)、ES256/ES384(ECDSA 椭圆曲线)。推荐生产环境使用 RS256。
安全提示
- 本工具仅用于解码 JWT,不验证签名
- JWT 的 Payload 是 Base64 编码,不是加密,任何人都可以解码
- 不要在 JWT 的 Payload 中存储敏感信息(如密码)
- 生产环境中应验证 JWT 的签名和过期时间
- 建议使用 HTTPS 传输 JWT 以防止中间人攻击