身份令牌 (ID Token) 和访问令牌 (Access Token)

在 Amazon Cognito 中,身份令牌 (ID Token) 和访问令牌 (Access Token) 都是 JSON Web 令牌 (JWT),但它们的目的和用途不同:

身份令牌 (ID Token):

  • 用途: 用于验证用户的身份。它包含有关用户身份的信息,例如用户名、电子邮件地址、自定义属性等。 主要用于客户端应用程序验证用户的身份,例如显示用户的个人资料信息。 1 2 3

  • 内容: 包含用户的身份信息,例如 sub (用户 ID)、emailname、自定义属性等。 它不包含授权信息。 1 2 3

  • 安全性: 因为它包含用户的个人信息,所以应该妥善保管,避免泄露。 通常不应该将其发送到后端服务,因为后端服务应该自己从 Cognito 获取用户信息。 2

  • 使用场景: 用于客户端应用程序验证用户身份,显示用户个人资料,以及在需要用户身份信息但不需要访问后端资源的情况下使用。 例如,在 API Gateway 中用作授权器,验证用户身份。 2

访问令牌 (Access Token):

  • 用途: 用于授权用户访问受保护的资源或 API。它不包含用户的个人信息,只包含授权信息,例如允许访问的资源或 API 的范围。 1 2 3

  • 内容: 包含授权信息,例如 scope (授权范围)、client_id (客户端 ID) 等。 它不包含用户的个人信息。 1 2 3

  • 安全性: 如果泄露,攻击者可以访问受保护的资源或 API,但无法获取用户的个人信息。 2

  • 使用场景: 用于访问后端 API、AWS 服务或其他受保护的资源。 例如,在向后端 API 发送请求时,在请求头中包含 Access Token。 2

总结:

ID Token 用于验证用户身份,Access Token 用于授权用户访问资源。 它们通常一起使用,ID Token 用于验证用户,Access Token 用于授权用户执行操作。 最佳实践是将 ID Token 保留在客户端,而将 Access Token 用于与后端服务的交互。 后端服务不应依赖 ID Token 中的用户数据,而应从 Cognito 或其他数据源中获取必要的信息。

最后更新于