YeeAuth 文档
核心概念

JWT Token 与各种令牌

了解什么是 JWT,以及 ID Token、Access Token 和 Refresh Token 之间的区别。

JWT Token 与各种令牌

在现代身份认证体系(尤其是基于 OIDC 和 OAuth 2.0 的体系)中,Token(令牌) 是传递身份和授权信息的核心载体。YeeAuth 使用业界标准的 JWT 格式来签发 Token。

什么是 JWT Token?

JWT (JSON Web Token) 是一种开放标准 (RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以 JSON 对象的形式安全地传输信息。 这些信息可以被验证和信任,因为它们是经过数字签名的。JWT 通常使用 HMAC 算法或 RSA/ECDSA 的公钥/私钥对进行签名。

一个典型的 JWT 由三部分组成,通过点号 (.) 分隔:

  1. Header(头部):包含 Token 的类型(JWT)和所使用的签名算法(如 RS256)。
  2. Payload(负载):包含声明(Claims),即关于实体(通常是用户)和其他数据的陈述。例如用户的 ID、过期时间等。
  3. Signature(签名):用于验证消息在传递过程中没有被更改。

Token 的三大护法

在 YeeAuth 的认证授权流程中,您通常会接触到以下三种核心 Token:

ID Token

  • 用途:用于证明“你是谁”。它主要被前端应用或客户端消费。
  • 内容:包含了用户的身份信息声明(如 sub 用户 ID、name 姓名、email 邮箱等)。
  • 生命周期:通常较短,因为它仅仅是用户成功认证那一刻的“证明信”。
  • 注意永远不要使用 ID Token 来调用您的后端 API。

Access Token

  • 用途:用于证明“你能做什么”。它是调用受保护的 API 资源时出示的“通行证”。
  • 内容:包含了授权信息,例如允许操作的权限范围(scopes)、受众(aud 即允许使用该 Token 的 API 标识)等。它可能不包含任何用户的具体姓名或邮箱,因为 API 只关心“你有没有权限访问”。
  • 生命周期:较短(通常为几分钟到几小时),以降低泄露带来的风险。

Refresh Token

  • 用途:用于在 Access Token 过期时,无需用户重新登录即可静默获取新的 Access Token 和 ID Token。
  • 特点:它通常是一个不透明的字符串(Opaque Token),并不一定是 JWT 格式。
  • 安全性:由于 Refresh Token 的生命周期很长(甚至可以是无限期直到被主动撤销),它具有极高的敏感性。通常只签发给能安全存储机密的客户端(如拥有后端的 Web 应用),并建议开启“刷新令牌轮转(Rotation)”以增强安全性。

Access Token vs ID Token

特性ID TokenAccess Token
受众 (Audience)客户端应用程序本身 (Client)资源服务器 (API Server)
主要目的在客户端验证用户身份并展示用户信息授权客户端访问后端 API 资源
是否包含权限范围不包含 (只关心身份)包含 (Scopes,定义了可以做的操作)
是否可被 API 验证

On this page