JWT 解码器/

你的数据是 100% 私密的——JWT 完全在你的设备上解码和编码。

JWT
解码后的头部
解码后的有效载荷
公钥

了解 JWT

所有关于 JWT 的信息以及分步指南,帮助你在不同框架中验证 JWT。

什么是 JWT?

JWT(JSON Web Token)是一种自包含且无状态的令牌,以结构化和可读的格式携带信息。无论你是保护 API 还是为应用程序采纳基于令牌的身份验证,JWTs 都是一个强大的工具,因为它们:

  • 无状态: JWTs 是自包含的,不需要服务端状态来验证。JWT 可以通过签名确保数据完整性。
  • 跨服务兼容: JWTs 可以在不同服务之间轻松共享和验证。
  • 可扩展: JWT 的有效载荷可以包含自定义声明,允许灵活的授权和信息共享。
了解更多

JWT 的结构

一个典型的 JWT 被分成三部分,每部分都使用 Base64URL 编码并用点(.)分隔:

  • 头部 - 包含元数据,如签名算法(例如,HS256 或 RS256)和令牌的类型(JWT)。
  • 有效载荷 - 包含实际数据,如用户 ID、用户资料、到期时间或作用域。
  • 签名 - 头部、有效载荷的哈希组合,并使用密钥进行安全保护。其目的是确保令牌的完整性和确认未被篡改。

这种结构使 JWT 可以在各方之间提供一种紧凑、安全的信息传输方式。

jwt_structure

JWT 中的常见令牌声明

声明是有效载荷的一部分,持有关键信息。以下是标准化的注册声明供参考:

声明全名描述
iss发行者发布该 JWT 的实体,比如授权服务器。
sub主题标识 JWT 的主题,通常代表经过身份验证的用户。
aud受众指定哪些接收者可以接受和处理该令牌。这可以是多个受众的值数组或单个受众的单个值。
exp到期时间在该时间之后令牌会失效。这有助于通过限制令牌的有效时间来防止重放攻击。
nbf在此之前无效使令牌仅在该时间戳之后有效。在无法访问时钟的情况下很有帮助。
iat发行时间令牌创建的时间。可用于确定令牌的年龄。
jtiJWT ID令牌的唯一标识符,有助于防止令牌多次使用(例如,在重放攻击中)。

根据规范和授权服务器的配置,可能在负载中包含其他声明以支持特定的使用场景。你还可以向 JWT 添加自定义声明以满足独特的业务需求。

注意: 请勿在 JWT 声明中存储私人或敏感信息。虽然 JWT 声明经过编码(使用 Base64URL),但它们未加密。这意味着任何拥有令牌的人都可以对其解码并查看声明,即使他们无法在不使签名无效的情况下篡改它。当需要时,使用加密或其他安全方法保护敏感数据。

什么时候使用 JWT?

JWT 在以下场景中特别有帮助:

  1. 微服务架构: 用于多个服务之间无状态的身份验证。
  2. 单点登录 (SSO) 系统: 通过一次身份验证访问多个应用程序。
  3. 移动应用程序: 高效维护 API 调用中用户会话。
  4. 高流量应用程序: 在高容量环境中降低数据库负载。
  5. 跨域资源共享 (CORS): 简化多个域之间的身份验证。
  6. 无服务器架构: 提供无状态身份验证,但服务端会话具有挑战性。
了解更多

如何验证 JWT?

必须验证 JWT 的完整性,以确保其头部和载荷没有被篡改。以下是流行编程环境中验证 JWT 的分步示例:

使用 Logto Cloud 解锁更多功能

通过 Logto Cloud 简化你的工作流并确保安全的用户管理。基于 OpenID Connect (OIDC) 构建,它利用 JWT 提供可靠的身份验证和授权系统,旨在满足你的扩展需求。