我们的JSON Web Token (JWT) 解码器完整指南
欢迎使用我们安全的客户端JWT解码器。这款免费的在线工具对于任何开发人员、安全专业人员或处理现代身份验证系统的个人来说都是必不可少的实用工具。它允许您即时解码JWT(JSON Web Token),并以整洁、易于理解的格式检查其内容。只需将您的令牌粘贴到文本区域,我们的工具就会解析标头和负载,并以格式化的JSON形式显示它们。
这款在线JWT解码器最重要的特性是其安全性。所有的解码和处理都100%在您的浏览器中完成。您的令牌永远不会发送到我们的服务器。这种客户端处理方式确保了您的敏感信息(如身份验证令牌、API密钥或私人用户数据)完全保密。您可以满怀信心地调试任何JWT令牌。
什么是 JSON Web Token (JWT)?
JSON Web Token (JWT) 是一种紧凑的、URL安全的开放标准(由RFC 7519定义),用于在各方之间作为JSON对象安全地传输信息。由于此信息经过数字签名,因此可以进行验证和信任。JWT是无状态且自包含的,这意味着验证用户所需的所有信息都包含在令牌本身中。这使得它们成为现代Web和移动应用中处理身份验证和信息交换的极受欢迎的选择。
您可以通过由点(.)分隔的三部分结构轻松识别JWT:header.payload.signature。
JWT 的三部分详述
当您使用我们的JWT解码器时,您正在查看令牌前两部分的解码版本。
1. 标头 (元数据)
令牌的第一部分是JWT标头。它是一个Base64Url编码的JSON对象。它通常由两个键值对组成:
- typ (类型):声明令牌的类型,几乎总是 "JWT"。:
- alg (算法):指定用于创建签名的签名算法。常见的算法包括HS256(带SHA-256的HMAC,对称算法)和RS256(带SHA-256的RSA,非对称算法)。:
2. 负载 (声明)
令牌的第二部分是JWT负载。这部分也是一个Base64Url编码的JSON对象,包含“声明”(claims)。声明是关于实体(通常是用户)的陈述和追加数据。声明有三种类型:
- 注册声明:这是JWT标准建议的一组预定义声明,以确保互操作性。常见的注册声明包括iss(发行人)、sub(主体)、aud(受众)、exp(过期时间)、nbf(不早于)、iat(签发时间)和jti(JWT ID)。:
- 公共声明:由使用JWT的组织(如Google或Microsoft)定义的声明,通常在IANA JSON Web Token注册表中注册。:
- 私有声明:为在同意使用它们的各方之间共享信息而创建的自定义声明。例如,您可以在负载中添加 {"role": "admin"} 或 {"username"
我们的JWT声明查看器使您可以轻松地一目了然地检查所有这些声明。
3. 签名
令牌的第三部分是JWT签名。它是通过获取编码的标头、编码的负载、密钥(或非对称算法的私钥),并使用指定的算法(alg)运行它们来创建的。
签名的目的是验证令牌的真实性。它确保令牌在传输过程中没有被更改。如果攻击者甚至更改负载中的一个字符,签名将不再有效。这就是为什么此工具不执行且无法执行签名验证的原因——这样做需要密钥,而密钥永远不应共享或粘贴到在线工具中。
如何使用此 JWT 解码工具
- 复制您的令牌:从您的应用、浏览器本地存储或API响应中复制完整的JWT字符串(全部三部分)。
- 粘贴令牌:将令牌粘贴到页面顶部的文本区域。您还可以使用“加载示例”按钮查看有效令牌。
- 点击“解码令牌”:工具将即时解析令牌。
- 检查结果:标头和负载将显示在下方两个独立的、清晰格式化的JSON框中,让您轻松阅读所有声明和元数据。
- 清除:点击“清除”按钮重新开始。
常见调试场景
JWT解码器主要是一个调试工具。以下是您可以使用它解决的常见问题:
- “令牌已过期”错误:粘贴令牌并检查exp声明。将此Unix时间戳与当前时间进行比较,以查看令牌是否确实已过期。
- 权限被拒绝:解码负载以检查角色(role)、范围(scopes)或其他自定义声明,以确保用户具有正确的权限。
- 找不到用户:检查sub(主体)声明,以确保向后端发送了正确的用户ID。
- 令牌对此应用无效:检查aud(受众)和iss(发行人)声明,以确保它们与您的服务器预期的一致。
相关开发人员工具
由于JWT建立在其他Web标准之上,您可能会发现这些工具与我们的解码器配合使用非常有用: