

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

# Amazon Cognito 身份池入门
<a name="getting-started-with-identity-pools"></a>

借助 Amazon Cognito 身份池，您可以创建唯一身份并为用户分配权限。身份池可以从以下类型的身份验证服务中引入身份：
+ Amazon Cognito 用户池中的用户
+ 通过外部身份提供者（例如 Facebook、Google、Apple 或 OIDC 或 SAML 身份提供者）进行身份验证的用户。
+ 通过您自己的现有身份验证流程进行身份验证的用户

用户向其提供商进行身份验证并向身份池出示授权后，他们将获得临时 Amazon 证书。用户的凭证具有您为访问其他 Amazon Web Services 服务而定义的权限。

**Topics**
+ [在 Amazon Cognito 中创建一个身份池](#create-identity-pool)
+ [设置 SDK](#install-the-mobile-or-javascript-sdk)
+ [集成身份提供者](#integrate-the-identity-providers)
+ [获取凭证](#get-credentials)
+ [身份池的示例应用程序](getting-started-identity-pools-application.md)

## 在 Amazon Cognito 中创建一个身份池
<a name="create-identity-pool"></a>

您可以通过 Amazon Cognito 控制台创建身份池，也可以使用 ( Amazon Command Line Interface CLI) 或 Amazon Cognito。 APIs以下过程是在控制台中创建新身份池的通用指南。您也可以[直接跳到控制台](https://console.amazonaws.cn/cognito/v2/identity/identity-pools)，按照引导式体验和内联帮助内容进行操作。

**在控制台中创建新的身份池**

1. 登录 [Amazon Cognito 控制台](https://console.amazonaws.cn/cognito/home)并选择**身份池**。要向 IAM 主体分配权限，以便他们可以创建和管理 Amazon Cognito 资源，请参阅[Amazon 亚马逊 Cognito 的托管策略](security-iam-awsmanpol.md)。`AmazonCognitoPowerUser` 策略已足以创建身份池。

1. 选择**创建身份池**。

1. 在**配置身份池信任**中，选择将您的身份池设置为**经过身份验证的访问权限**和/或**访客访问权限**。

   1. 如果您选择了**经过身份验证的访问权限**，请在身份池中选择一个或多个您要设置为经过身份验证的身份来源的**身份类型**。如果您配置了**自定义开发人员提供者**，则在创建身份池后无法对其进行修改或删除。

1. 在**配置权限**中，为身份池中经过身份验证的用户或访客用户选择原定设置 IAM 角色。

   1. 如果您希望 Amazon Cognito 为您创建一个具有基本权限并与您的身份池建立信任关系的新角色，请选择**创建新的 IAM 角色**。例如，输入 **IAM 角色名称**以标识您的新角色，例如 `myidentitypool_authenticatedrole`。选择**查看策略文档**以查看 Amazon Cognito 将分配给新 IAM 角色的权限。

   1. 如果您的 Amazon Web Services 账户 角色中已有要**使用的角色，则可以选择使用现有 IAM** 角色。您必须将您的 IAM 角色信任策略配置为包括 `cognito-identity.amazonaws.com`。配置您的角色信任策略，以仅允许 Amazon Cognito 在提供证据证明请求来自您的特定身份池中经过身份验证的用户时，才代入该角色。有关更多信息，请参阅 [角色信任和权限](iam-roles.md#role-trust-and-permissions)。

1. 在 **Connect 身份提供商**中，输入您在**配置身份池信任中选择的身份**提供商 (IdPs) 的详细信息。系统可能会要求您提供 OAuth 应用程序客户端信息、选择 Amazon Cognito 用户池、选择 IAM IdP 或输入开发者提供商的自定义标识符。

   1. 为每个 IdP 选择**角色设置**。您可以为该 IdP 中的用户分配您在配置**经过身份验证的角色**时设置的**原定设置角色**，也可以**使用规则选择角色**。使用 Amazon Cognito 用户池 IdP，还可以**选择令牌中包含 preferred\$1role 声明的角色**。有关 `cognito:preferred_role` 声明的更多信息，请参阅[将优先级值分配到组](cognito-user-pools-user-groups.md#assigning-precedence-values-to-groups)。

      1. 如果您选择**使用规则选择角色**，请输入用户身份验证中的来源**声明**、您要用来与声明进行比较的**运算符**、导致与该角色选择匹配的**值**，以及当**角色分配**匹配时要分配的**角色**。选择**添加其他**，以根据不同的条件创建其他规则。

      1. 选择**角色解析**。当用户的声明与您的规则不匹配时，您可以拒绝凭证或为**经过身份验证的角色**颁发凭证。

   1. 您可以为每个 IdP 配置**访问控制属性**。访问控制属性将用户声明映射到 Amazon Cognito 应用于其临时会话的[主体标签](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_iam-tags.html)。您可以构建 IAM policy，以根据应用于用户会话的标签来筛选用户访问权限。

      1. 如果不应用主体标签，请选择**非活动**。

      1. 要基于 `sub` 和 `aud` 声明应用主体标签，请选择**使用原定设置映射**。

      1. 要为主体标签创建自己的自定义属性模式，请选择**使用自定义映射**。然后，对于您要在标签中表示的每个**声明**，输入要从该声明中获取的**标签键**。

1. 在**配置属性**中，在**身份池名称**下输入**名称**。

1. 在**基本（经典）身份验证**下，选择是否要**激活基本流程**。启用基本流程后，您可以绕过为自己选择的角色 IdPs ，[AssumeRoleWithWebIdentity](https://docs.amazonaws.cn/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)直接致电。有关更多信息，请参阅 [身份池身份验证流程](authentication-flow.md)。

1. 如果要将[标签](https://docs.amazonaws.cn/general/latest/gr/aws_tagging.html)应用到身份池，请在**标签**下选择**添加标签**。

1. 在**查看并创建**中，确认您为新身份池所做的选择。选择**编辑**以返回向导并更改任何设置。完成后，选择**创建身份池**。

## 设置 SDK
<a name="install-the-mobile-or-javascript-sdk"></a>

要使用 Amazon Cognito 身份池，请设置 Amazon Amplify 适用于 Java 的 Amazon SDK、或。 适用于 .NET 的 Amazon SDK有关更多信息，请参阅以下主题。
+ 在[《*适用于 JavaScript 的 Amazon SDK 开发者指南*》 JavaScript中设置 SDK](https://docs.amazonaws.cn/sdk-for-javascript/v2/developer-guide/setting-up.html)
+ 《Amplify 开发中心》**中的 [Amplify 文档](https://docs.amplify.aws/)
+ 《适用于 .NET 的 Amazon SDK 开发人员指南》**中的 [Amazon Cognito 凭证提供者](https://docs.amazonaws.cn/sdk-for-net/v3/developer-guide/cognito-creds-provider.html)

## 集成身份提供者
<a name="integrate-the-identity-providers"></a>

Amazon Cognito 身份池（联合身份）通过 Amazon Cognito 用户池、联合身份提供者（包括 Amazon、Facebook、Google、Apple 和 SAML 身份提供者）以及未经身份验证的身份支持用户身份验证。此功能还支持 [经开发人员验证的身份](developer-authenticated-identities.md)，这让您能够通过自己的后端身份验证流程注册并对用户进行身份验证。

要了解有关使用 Amazon Cognito 用户池创建自己的用户目录的更多信息，请参阅[Amazon Cognito 用户群体](cognito-user-pools.md)和[登录后 Amazon Web Services 服务 使用身份池进行访问](amazon-cognito-integrating-user-pools-with-identity-pools.md)。

要了解有关使用外部身份提供者的更多信息，请参阅 [身份池第三方身份提供者](external-identity-providers.md)。

要了解有关集成自己的后端身份验证流程的更多信息，请参阅[经开发人员验证的身份](developer-authenticated-identities.md)。

## 获取凭证
<a name="get-credentials"></a>

Amazon Cognito 身份池为访客用户（未经身份验证）和已通过身份验证并收到令牌的用户提供临时 Amazon 证书。有了这些 Amazon 证书，您的应用程序就可以 Amazon 通过 Amazon API Gateway 安全地访问内部 Amazon 或外部的后端。请参阅[获取凭证](getting-credentials.md)。