

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 了解用户池 JSON 网络令牌 (JWTs)
<a name="amazon-cognito-user-pools-using-tokens-with-identity-providers"></a>

令牌是身份验证的构件，您的应用程序可以将其用作 OIDC 身份验证的证明并请求访问资源。令牌中的*声明*是有关您的用户的信息。ID 令牌包含有关用户身份的声明，例如他们的用户名、姓氏和电子邮件地址。访问令牌包含诸如经过身份验证`scope`的用户可用于访问第三方 APIs、Amazon Cognito 用户自助服务 API 操作以及. [userInfo 端点](userinfo-endpoint.md) 访问令牌和 ID 令牌均包含 `cognito:groups` 声明，其中包含用户在用户池中的组成员资格。有关用户池组的更多信息，请参阅 [向用户池添加组](cognito-user-pools-user-groups.md)。

Amazon Cognito 还有刷新令牌，您可以使用它来获取新的令牌或撤销现有令牌。[刷新令牌](amazon-cognito-user-pools-using-the-refresh-token.md)来检索新的 ID 令牌和访问令牌。[撤销令牌](amazon-cognito-user-pools-using-the-refresh-token.md#amazon-cognito-identity-user-pools-revoking-all-tokens-for-user)来撤销刷新令牌允许的用户访问权限。

Amazon Cognito 以 [base64url](https://datatracker.ietf.org/doc/html/rfc4648#section-5) 编码字符串的形式发布令牌。您可以将任何 Amazon Cognito ID 或访问令牌从 `base64url` 解码为纯文本 JSON。Amazon Cognito 刷新令牌已加密，对用户池用户和管理员不透明，并且只能由您的用户池读取。

**使用令牌进行身份验证**  
当用户登录您的应用程序时，Amazon Cognito 会验证登录信息。如果登录成功，Amazon Cognito 会创建会话并为经过身份验证的用户返回 ID 令牌、访问令牌和刷新令牌。您可以使用这些令牌向您的用户授予对下游资源的访问权限， APIs 例如 Amazon API Gateway。或者，您可以用它们交换用于访问其他 Amazon Web Services 服务的临时 Amazon 凭证。

![\[身份验证概述\]](http://docs.amazonaws.cn/cognito/latest/developerguide/images/scenario-authentication-cup2.png)


**存储令牌**  
您的应用程序必须能够存储不同大小的令牌。令牌大小变化的原因可能包括但不限于其它声明、编码算法的更改以及加密算法的更改等。当您在用户池中启用令牌吊销时，Amazon Cognito 会向 JSON Web 令牌添加其他声明，从而增加令牌大小。新 `origin_jti` 和 `jti` 声明已添加到访问和 ID 令牌中。有关令牌撤销的更多信息，请参阅[撤销令牌](https://docs.amazonaws.cn/cognito/latest/developerguide/token-revocation.html)。

**重要**  
最佳实践是在应用程序环境中保护传输和存储中的所有令牌。令牌可以包含有关用户的个人识别信息，以及有关用于用户池的安全模型的信息。

**自定义令牌**  
您可以自定义 Amazon Cognito 传递给应用程序的访问令牌和 ID 令牌。在 [令牌生成前 Lambda 触发器](user-pool-lambda-pre-token-generation.md) 中，您可以添加、修改和隐藏令牌声明。令牌生成前触发器是一个 Lambda 函数，Amazon Cognito 会向其发送一组默认声明。声明包括 OAuth 2.0 范围、用户池群组成员资格、用户属性等。然后，该函数可以根据这些信息在运行时进行更改，并将更新的令牌声明返回给 Amazon Cognito。

使用版本 2 事件自定义访问令牌需要支付额外费用。有关更多信息，请参阅 [Amazon Cognito 定价](https://www.amazonaws.cn/cognito/pricing/)。

**Topics**
+ [了解身份（ID）令牌](amazon-cognito-user-pools-using-the-id-token.md)
+ [了解访问令牌](amazon-cognito-user-pools-using-the-access-token.md)
+ [刷新令牌](amazon-cognito-user-pools-using-the-refresh-token.md)
+ [通过令牌撤销来结束用户会话](token-revocation.md)
+ [验证 JSON Web 令牌](amazon-cognito-user-pools-using-tokens-verifying-a-jwt.md)
+ [管理用户池令牌到期和缓存](amazon-cognito-user-pools-using-tokens-caching-tokens.md)