

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

# 身份池控制台概述
<a name="identity-pools"></a>

Amazon Cognito 身份池为访客用户（未经身份验证）和已通过身份验证并收到令牌的用户提供临时 Amazon 证书。身份池是指与您的外部身份提供者关联的用户标识符的存储。

要了解身份池的特征和选项，一种方法是在 Amazon Cognito 控制台中创建一个身份池。您可以探索不同设置对身份验证流程、基于角色和基于属性的访问控制以及访客访问的影响。接下来，您可以继续阅读本指南的后面章节，并向您的应用程序添加相应的组件，以便可以实施身份池身份验证。

**Topics**
+ [创建 身份池](#identity-pools-create)
+ [用户 IAM 角色](#user-iam-roles)
+ [经过身份验证和未经身份验证的身份](#authenticated-and-unauthenticated-identities)
+ [激活或停用访客访问权限](#enable-or-disable-unauthenticated-identities)
+ [更改与身份类型关联的角色](#change-the-role-associated-with-an-identity-type)
+ [编辑身份提供者](#enable-or-edit-authentication-providers)
+ [删除身份池](#delete-an-identity-pool)
+ [从身份池删除身份](#delete-an-identity-from-an-identity-pool)
+ [将 Amazon Cognito Sync 与身份池一起使用](#identity-pools-sync)

## 创建 身份池
<a name="identity-pools-create"></a>

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

1. 登录 [Amazon Cognito 控制台](https://console.amazonaws.cn/cognito/home)并选择**身份池**。

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

## 用户 IAM 角色
<a name="user-iam-roles"></a>

IAM 角色定义用户访问 Amazon 资源的权限，例如[Amazon Cognito Sync](cognito-sync.md)。您的应用程序用户将担任您创建的角色。您可以为经过身份验证和未经身份验证的用户指定不同角色。要了解有关 IAM 角色的更多信息，请参阅 [IAM 角色](iam-roles.md)。

## 经过身份验证和未经身份验证的身份
<a name="authenticated-and-unauthenticated-identities"></a>

Amazon Cognito 身份池同时支持经过身份验证和未经身份验证的身份。经过身份验证的身份属于已通过任何受支持的身份提供商进行身份验证的用户。未经身份验证的身份通常属于来宾用户。
+ 要使用公共登录提供商配置经过身份验证的身份，请参阅 [身份池第三方身份提供者](external-identity-providers.md)。
+ 要配置您自己的后端身份验证流程，请参阅 [经开发人员验证的身份](developer-authenticated-identities.md)。

## 激活或停用访客访问权限
<a name="enable-or-disable-unauthenticated-identities"></a>

 Amazon Cognito 身份池访客访问（未经身份验证的身份）为未向身份提供者进行身份验证的用户提供唯一标识符和 Amazon 证书。如果应用程序允许未登录的用户进行访问，则您可以针对未经身份验证的身份激活访问权限。要了解更多信息，请参阅[Amazon Cognito 身份池入门](getting-started-with-identity-pools.md)。

**更新身份池中的访客访问权限**

1. 从 [Amazon Cognito 控制台](https://console.amazonaws.cn/cognito/home)中选择**身份池**。选择身份池。

1. 选择**用户访问**选项卡。

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. 选择**保存更改**。

        1. 要激活访客访问权限，请在**用户访问权限**选项卡中选择**激活**。

## 更改与身份类型关联的角色
<a name="change-the-role-associated-with-an-identity-type"></a>

身份池中的每个身份要么经过身份验证，要么未经过身份验证。经过身份验证的身份属于通过公共登录提供商（Amazon Cognito 用户池、Login with Amazon、Sign in with Apple、Facebook、Google、SAML 或任何 OpenID Connect 提供商）或开发人员提供商（自己的后端身份验证流程）验证身份的用户。未经身份验证的身份通常属于来宾用户。

每个身份类型都有一个分配的角色。此角色附有策略，规定 Amazon Web Services 服务 该角色可以访问哪个角色。Amazon Cognito 接收请求后，服务将确定身份类型、确定分配给该身份类型的角色，并使用附加到该角色的策略进行响应。通过修改策略或为身份类型分配不同的角色，您可以控制哪些 Amazon Web Services 服务 身份类型可以访问。要查看或修改与身份池中与角色关联的策略，请参阅 [Amazon IAM 控制台](https://console.amazonaws.cn/iam/home)。

**更改身份池的原定设置经过身份验证或未经身份验证的角色**

1. 从 [Amazon Cognito 控制台](https://console.amazonaws.cn/cognito/home)中选择**身份池**。选择身份池。

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. 选择**保存更改**。

## 编辑身份提供者
<a name="enable-or-edit-authentication-providers"></a>

如果您允许用户通过使用者身份提供者（例如，Amazon Cognito 用户池、Login with Amazon、通过 Apple 登录、Facebook 或 Google）进行身份验证，则您可以在 Amazon Cognito 身份池（联合身份）控制台中指定应用程序标识符。上述操作会将应用程序 ID (由公共登录提供商提供) 与身份池关联。

您还可以从此页面为每个提供商配置身份验证规则。每个提供商最多可以有 25 个规则。规则按您为各个提供商保存的顺序应用。有关更多信息，请参阅 [使用基于角色的访问控制](role-based-access-control.md)。

**警告**  
更改身份池中关联的 IdP 应用程序 ID 可防止现有用户通过该身份池进行身份验证。有关更多信息，请参阅 [身份池第三方身份提供者](external-identity-providers.md)。

**更新身份池身份提供者（IdP）**

1. 从 [Amazon Cognito 控制台](https://console.amazonaws.cn/cognito/home)中选择**身份池**。选择身份池。

1. 选择**用户访问**选项卡。

1. 找到**身份提供者**。选择要编辑的身份提供者。如果要添加新的 IdP，请选择**添加身份提供者**。

   1. 如果您选择**添加身份提供者**，请选择要添加的**身份类型**之一。

1. 要更改应用程序 ID，请在**身份提供者信息**中选择**编辑**。

1. 要更改 Amazon Cognito 在向通过该提供商进行身份验证的用户颁发凭证时请求的角色，请在**角色设置**中选择**编辑**。

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

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

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

1. 要更改 Amazon Cognito 在向通过该提供者进行身份验证的用户颁发凭证时分配的主体标签，请在**访问控制属性**中选择**编辑**。

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

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

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

1. 选择**保存更改**。

## 删除身份池
<a name="delete-an-identity-pool"></a>

您不能撤销身份池删除。删除身份池后，所有依赖该身份池的应用程序和用户将停止工作。

**删除身份池**

1. 从 [Amazon Cognito 控制台](https://console.amazonaws.cn/cognito/home)中选择**身份池**。选中要删除的身份池旁边的单选按钮。

1. 选择**删除**。

1. 输入或粘贴身份池的名称，然后选择**删除**。

**警告**  
选择删除按钮后，您将永久删除身份池和其中包含的所有用户数据。删除身份池将导致使用身份池的应用程序和其他服务停止工作。

## 从身份池删除身份
<a name="delete-an-identity-from-an-identity-pool"></a>

当您从身份池中删除身份时，您会删除 Amazon Cognito 为该联合用户存储的身份信息。当用户再次请求凭证时，如果身份池仍然信任用户的身份提供者，则用户会收到新的身份 ID。您无法撤销此操作。

**删除身份**

1. 从 [Amazon Cognito 控制台](https://console.amazonaws.cn/cognito/home)中选择**身份池**。选择身份池。

1. 选择**身份浏览器**选项卡。

1. 选中要删除的身份旁边的复选框，然后选择**删除**。确认您要删除这些身份，然后选择**删除**。

## 将 Amazon Cognito Sync 与身份池一起使用
<a name="identity-pools-sync"></a>

 Amazon Cognito Sync 是一个 Amazon Web Services 服务 和客户端库，它使跨设备同步与应用程序相关的用户数据成为可能。Amazon Cognito 可以跨移动设备和 Web 同步用户配置文件数据，无需使用您自己的后端。客户端库在本地缓存数据，因此，您的应用程序可以读取和写入数据，无论设备是否处于连接状态，都是如此。设备处于在线状态时，您可以同步数据。如果您设置推送同步，您可在更新可用时立即通知其他设备。

### 管理数据集
<a name="managing-datasets-in-the-amazon-cognito-console"></a>

如果您在应用程序中实施了 Amazon Cognito Sync 功能，则 Amazon Cognito 身份池控制台允许您手动创建和删除各个身份的数据集和记录。对于您在 Amazon Cognito 身份池控制台中对身份的数据集或记录做出的任何更改，只有当您在控制台中选择 **Synchronize**（同步）后才会保存。直到身份调用 **Synchronize**（同步）后，终端用户才能看到更改。一旦刷新特定身份的列表数据集页面，从其它设备同步的有关各个身份的数据即会显示。

#### 为身份创建数据集
<a name="create-a-dataset-for-an-identity"></a>

Amazon Cognito Sync 将数据集与一个身份关联起来。您可以在数据集中填充该身份所代表的用户的身份信息，然后将该信息同步到用户的所有设备。

**将数据集和数据集记录添加到身份**

1. 从 [Amazon Cognito 控制台](https://console.amazonaws.cn/cognito/home)中选择**身份池**。选择身份池。

1. 选择**身份浏览器**选项卡。

1. 选择要编辑的身份。

1. 在**数据集**中，选择**创建数据集**。

1. 输入**数据集名称**并选择**创建数据集**。

1. 如果您想向数据集添加记录，请从身份详细信息中选择您的数据集。在**记录**中，选择**创建记录**。

1. 输入记录的**键**和**值**。选择**确认**。重复此操作以添加更多记录。

#### 删除与身份关联的数据集
<a name="delete-a-dataset-associated-with-an-identity"></a>

**从身份中删除数据集及其记录**

1. 从 [Amazon Cognito 控制台](https://console.amazonaws.cn/cognito/home)中选择**身份池**。选择身份池。

1. 选择**身份浏览器**选项卡。

1. 选择包含要删除的数据集的身份。

1. 在**数据集**中，选择要删除的数据集旁边的单选按钮。

1. 选择**删除**。查看您的选择，然后再次选择**删除**。

### 批量发布数据
<a name="bulk-publish-data"></a>

 批量发布可用于将存储在 Amazon Cognito Sync 存储中的数据导出到 Amazon Kinesis Stream。有关如何批量发布所有流的说明，请参阅 [实施 Amazon Cognito Sync 流](cognito-streams.md)。

### 激活推送同步
<a name="enable-push-synchronization"></a>

 Amazon Cognito 会自动跟踪身份和设备之间的关联。通过使用推送同步功能，可以确保在身份数据发生更改时通知给定身份的每个实例。推送同步可以确保，只要身份的数据集发生更改，与该身份关联的所有设备就会收到一个静音推送通知，通知它们所发生的更改。

 您可以在 Amazon Cognito 控制台中激活推送同步。

**激活推送同步**

1. 从 [Amazon Cognito 控制台](https://console.amazonaws.cn/cognito/home)中选择**身份池**。选择身份池。

1. 选择**身份池属性**选项卡。

1. 在**推送同步**中，选择**编辑**

1. 选择**激活与身份池的推送同步**。

1. 选择您在当前 Amazon Web Services 区域中创建的 Amazon Simple Notiﬁcation Service（Amazon SNS）**平台应用程序**之一。Amazon Cognito 向您的平台应用程序发布推送通知。选择**创建平台应用程序**以导航到 Amazon SNS 控制台并创建一个新的应用程序。

1. 要发布到平台应用程序，Amazon Cognito 将代入您的 Amazon Web Services 账户中的 IAM 角色。如果您希望 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. 选择**保存更改**。

### 设置 Amazon Cognito Streams
<a name="set-up-cognito-streams"></a>

 Amazon Cognito Streams 让开发人员能够控制和了解他们存储在 Amazon Cognito Sync 中的数据。开发人员现在可以配置 Kinesis 流以接收数据形式的事件。Amazon Cognito 可以实时向您拥有的 Kinesis 流推送每个数据集更改。有关如何在 Amazon Cognito 控制台中设置 Amazon Cognito Streams 的说明，请参阅[实施 Amazon Cognito Sync 流](cognito-streams.md)。

### 设置 Amazon Cognito Events
<a name="set-up-cognito-events"></a>

 Amazon Cognito Events 允许您运行 Amazon Lambda 函数以响应 Amazon Cognito Sync 中的重要事件。当数据集得到同步时，Amazon Cognito Sync 会引发同步触发事件。当用户更新数据时，您可以使用同步触发事件采取行动。有关从控制台设置 Amazon Cognito Events 的说明，请参阅[使用 Amazon Cognito Events 自定义工作流](cognito-events.md)。

 要了解更多信息 Amazon Lambda，请参阅[Amazon Lambda](https://www.amazonaws.cn/lambda/)。