解码 JSON Web Token
JSON Web Token (JWT) 是一个紧凑的字符串,用于在系统之间传递身份和权限信息——最常见的形式是登录后作为 Authorization: Bearer 标头。它看起来像随机文本,但实际上是由三个 Base64URL 编码的部分组成:一个 头部 (header)、一个包含声明的 载荷 (payload),以及一个 签名 (signature)。本 JWT 解码器会拆分令牌,将前两个部分解码为可读的 JSON,并解释重要的声明。解码和验证都在本地进行,因此您的令牌绝不会被传输。
功能特性
- 头部和载荷 解码并美化格式,每个部分都带有复制按钮。
- 解释时间声明:将
iat、nbf、exp和auth_time从 Unix 时间戳(秒)转换成您所在时区的日期。 - 过期检查,让您一目了然地知道令牌是否已过期或尚未生效。
- 使用浏览器的 Web Crypto API 对 HS256、HS384 和 HS512 进行 HMAC 签名验证。
- 页面加载后可 离线工作;不会向任何地方发送数据。
使用场景
调试身份验证。 当请求因 401 Unauthorized 而失败时,解码令牌以检查它是否已过期、是否为正确的目标受众 (aud) 颁发,或是否包含预期的角色和范围。
构建和测试 API。 在发布前,验证您的服务器是否已将预期的声明和正确的过期时间放入令牌中。
学习 OAuth 和 OpenID Connect 的工作原理。 来自身份提供商的 ID 令牌和访问令牌通常是 JWT。解码一个测试令牌可以展示提供商共享了哪些关于用户的信息。
JWT 的结构
header.payload.signature
- 头部 (Header) — 令牌类型和签名算法,例如
{"alg":"HS256","typ":"JWT"}。 - 载荷 (Payload) — 声明。注册声明包括
iss(颁发者)、sub(主题,通常是用户 ID)、aud(受众)、exp、nbf、iat和jti(令牌 ID)。应用程序可以添加自定义声明,如name或role。 - 签名 (Signature) — 通过使用密钥 (HMAC) 或私钥 (RSA, ECDSA, EdDSA) 对
header.payload进行签名而创建。如果任何人更改了头部或载荷中的任何一个字符,签名将不再匹配。
由于载荷只是被编码,切勿将密码等机密信息放入 JWT 中。要解码其他 Base64 数据,请使用 Base64 工具;要查看任何时间戳,请使用 Unix 时间戳转换器。