

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

# Amazon Cognito 常见场景
<a name="cognito-scenarios"></a>

本主题介绍使用 Amazon Cognito 的六个常见场景。

Amazon Cognito 的两个主要组件是用户池和身份池。用户池是为您的 Web 和移动应用程序用户提供注册和登录选项的用户目录。身份池提供临时 Amazon 证书，以授予您的用户访问其他人的权限 Amazon Web Services 服务。

用户池是 Amazon Cognito 中的用户目录。您的应用程序用户可以通过用户池直接登录，也可以通过第三方身份提供者（IdP）进行联合身份验证。用户池管理处理通过Facebook、谷歌、亚马逊和苹果进行社交登录以及从OpenID Connect（OIDC）和SAML返回的代币的开销。 IdPs无论您的用户是直接登录还是通过第三方登录，用户池的所有成员都有一个可通过开发工具包访问的目录配置文件。

借助身份池，您的用户可以获得访问 Amazon 服务（例如 Amazon S3 和 DynamoDB）的临时 Amazon 证书。身份池支持匿名访客用户，也支持通过第三方进行联合 IdPs。

**Topics**
+ [使用用户池进行身份验证](#scenario-basic-user-pool)
+ [使用用户池令牌访问后端资源](#scenario-backend)
+ [将 API Gateway 和 Lambda 与用户池结合使用来访问资源](#scenario-api-gateway)
+ [使用用户池和身份池访问 Amazon 服务](#scenario-aws-and-user-pool)
+ [向第三方进行身份验证并使用身份池访问 Amazon 服务](#scenario-identity-pool)
+ [使用 Amazon Cognito 访问 Amazon AppSync 资源](#scenario-appsync)

## 使用用户池进行身份验证
<a name="scenario-basic-user-pool"></a>

您可以允许您的用户使用用户池进行身份验证。您的应用程序用户可以通过用户池直接登录，也可以通过第三方身份提供者（IdP）进行联合身份验证。用户池管理处理通过Facebook、谷歌、亚马逊和苹果进行社交登录以及从OpenID Connect（OIDC）和SAML返回的代币的开销。 IdPs

成功进行身份验证后，您的 Web 或移动应用程序将收到来自 Amazon Cognito 的用户池令牌。您可以使用这些令牌来检索允许您的应用程序访问其他 Amazon 服务的 Amazon 证书，也可以选择使用它们来控制对服务器端资源或 Amazon API Gateway 的访问。

有关更多信息，请参阅[身份验证会话示例](authentication.md#amazon-cognito-user-pools-authentication-flow)和[了解用户池 JSON 网络令牌 (JWTs)](amazon-cognito-user-pools-using-tokens-with-identity-providers.md)。

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


## 使用用户池令牌访问后端资源
<a name="scenario-backend"></a>

成功进行用户池登录后，您的 Web 或移动应用程序将收到来自 Amazon Cognito 的用户池令牌。您可以使用这些令牌控制对您的服务器端资源的访问。您也可以创建用户池组来管理权限以及表示不同类型的用户。有关使用组控制资源访问权限的更多信息，请参阅[向用户池添加组](cognito-user-pools-user-groups.md)。

![\[通过用户池访问您的服务器端资源\]](http://docs.amazonaws.cn/cognito/latest/developerguide/images/scenario-standalone.png)


在为用户群体配置域后，Amazon Cognito 会预调配一个托管 Web UI，您可使用此 UI 为应用程序添加注册页和登录页。使用此 OAuth 2.0 基础，您可以创建自己的资源服务器，让您的用户能够访问受保护的资源。有关更多信息，请参阅 [作用域、M2M 和资源服务器](cognito-user-pools-define-resource-servers.md)。

有关用户群体身份验证的更多信息，请参阅[身份验证会话示例](authentication.md#amazon-cognito-user-pools-authentication-flow)和[了解用户池 JSON 网络令牌 (JWTs)](amazon-cognito-user-pools-using-tokens-with-identity-providers.md)。

## 将 API Gateway 和 Lambda 与用户池结合使用来访问资源
<a name="scenario-api-gateway"></a>

您可以允许用户通过 API Gateway 访问您的 API。API Gateway 会验证来自成功用户池身份验证的令牌，并使用它们向您的用户授予对资源（包括 Lambda 函数）或您自己的 API 的访问权限。

您可以使用用户池中的组控制对 API Gateway 的权限，方法是将组成员资格映射到 IAM 角色。用户所属的组包含在您的应用程序用户登录时用户池提供的 ID 令牌中。有关用户池组的更多信息，请参阅[向用户池添加组](cognito-user-pools-user-groups.md)。

您可以将您的用户池令牌随请求一起提交到 API Gateway，以便 Amazon Cognito 授权方 Lambda 函数进行验证。有关 API Gateway 的更多信息，请参阅[将 API Gateway 与 Amazon Cognito 用户池结合使用](https://docs.amazonaws.cn/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html)。

![\[通过用户池访问 API Gateway\]](http://docs.amazonaws.cn/cognito/latest/developerguide/images/scenario-api-gateway.png)


## 使用用户池和身份池访问 Amazon 服务
<a name="scenario-aws-and-user-pool"></a>

成功进行用户池身份验证后，您的应用程序将收到来自 Amazon Cognito 的用户池令牌。您可以将它们交换为通过身份池临时访问其他 Amazon 服务。有关更多信息，请参阅[登录后 Amazon Web Services 服务 使用身份池进行访问](amazon-cognito-integrating-user-pools-with-identity-pools.md)和[Amazon Cognito 身份池入门](getting-started-with-identity-pools.md)。

![\[通过带有身份池的用户池访问 Amazon 证书\]](http://docs.amazonaws.cn/cognito/latest/developerguide/images/scenario-cup-cib.png)


## 向第三方进行身份验证并使用身份池访问 Amazon 服务
<a name="scenario-identity-pool"></a>

您可以允许您的用户通过身份池访问 Amazon 服务。身份池需要来自由第三方身份提供商进行身份验证的用户的 IdP 令牌 (如果是匿名来访者，则不需要令牌)。作为交换，身份池会授予可用于访问其他 Amazon 服务的临时 Amazon 证书。有关更多信息，请参阅 [Amazon Cognito 身份池入门](getting-started-with-identity-pools.md)。

![\[通过带有身份池的第三方身份提供商访问 Amazon 证书\]](http://docs.amazonaws.cn/cognito/latest/developerguide/images/scenario-identity-pool.png)


## 使用 Amazon Cognito 访问 Amazon AppSync 资源
<a name="scenario-appsync"></a>

您可以通过成功的 Amazon Cognito 用户池身份验证获得的令牌向您的用户授予访问 Amazon AppSync 资源的权限。有关更多信息，请参阅《*Amazon AppSync 开发者指南*》中的[AMAZON\$1COGNITO\$1USER\$1POOLS 授权](https://docs.amazonaws.cn/appsync/latest/devguide/security-authz.html#amazon-cognito-user-pools-authorization)。

您还可以使用从身份池收到的 IAM 证书签署对 Amazon AppSync GraphQL API 的请求。参见[AWS\$1IAM授权](https://docs.amazonaws.cn/appsync/latest/devguide/security-authz.html#aws-iam-authorization)。

![\[通过用户池或身份池访问 Amazon AppSync 资源\]](http://docs.amazonaws.cn/cognito/latest/developerguide/images/scenario-appsync.png)
