本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
身份池控制台概述
Amazon Cognito 身份池为访客用户(未经身份验证)和已通过身份验证并收到令牌的用户提供临时 AWS 证书。身份池是指与您的外部身份提供商关联的用户标识符的存储。
要了解身份池的功能和选项,一种方法是在 Amazon Cognito 控制台中创建一个身份池。您可以探索不同设置对身份验证流程、基于角色和基于属性的访问控制以及访客访问的影响。接下来,您可以继续阅读本指南的后面章节,向您的应用程序添加相应的组件,以便可以实现身份池身份验证。
主题
创建 身份池
在控制台中创建新的身份池
-
登录 Amazon Cognito 控制台
并选择身份池。 -
选择创建身份池。
-
在配置身份池信任中,选择将您的身份池设置为经过身份验证的访问权限和/或访客访问权限。
-
如果您选择了经过身份验证的访问权限,请在身份池中选择一个或多个您要设置为经过身份验证的身份来源的身份类型。如果您配置了自定义开发人员提供者,则在创建身份池后无法对其进行修改或删除。
-
-
在配置权限中,为身份池中经过身份验证的用户或访客用户选择默认IAM角色。
-
如果您希望 Amazon Cognito 为您创建一个具有基本权限并与您的身份池建立信任关系的新角色,请选择创建新角色。IAM例如,输入IAM角色名称以标识您的新角色
myidentitypool_authenticatedrole
。选择 “查看策略文档”,查看 Amazon Cognito 将分配给您的新IAM角色的权限。 -
如果您的IAM AWS 账户 角色中已经有要使用的角色,则可以选择使用现有角色。您必须将IAM角色信任策略配置为包括
cognito-identity.amazonaws.com
。配置您的角色信任策略,以仅允许 Amazon Cognito 在提供证据证明请求来自您的特定身份池中经过身份验证的用户时,才代入该角色。有关更多信息,请参阅 角色信任和权限。
-
-
在 Connect 身份提供商中,输入您在配置身份池信任中选择的身份提供商 (IdPs) 的详细信息。系统可能会要求您提供OAuth应用程序客户端信息、选择 Amazon Cognito 用户池、选择 I IAM dP 或输入开发者提供商的自定义标识符。
-
为每个 IdP 选择角色设置。您可以为该 IdP 中的用户分配您在配置经过身份验证的角色时设置的原定设置角色,也可以使用规则选择角色。使用 Amazon Cognito 用户群体 IdP,还可以选择令牌中包含 preferred_role 声明的角色。有关
cognito:preferred_role
声明的更多信息,请参阅将优先级值分配到组。-
如果您选择使用规则选择角色,请输入用户身份验证中的来源声明、您要用来比较声明的运算符、导致与该角色选择匹配的值,以及当角色分配匹配时要分配的角色。选择添加其他,以根据不同的条件创建其他规则。
-
选择角色解析。当用户的声明与您的规则不匹配时,您可以拒绝凭证或为经过身份验证的角色颁发凭证。
-
-
您可以为每个 IdP 配置访问控制属性。访问控制属性将用户声明映射到 Amazon Cognito 应用于其临时会话的主体标签。您可以制定IAM策略,根据应用于用户会话的标签来筛选用户访问权限。
-
如果不应用主体标签,请选择非活动。
-
要基于
sub
和aud
声明应用主体标签,请选择使用原定设置映射。 -
要为主体标签创建自己的自定义属性模式,请选择使用自定义映射。然后,对于您要在标签中表示的每个声明,输入要从该声明中获取的标签键。
-
-
-
在配置属性中,在身份池名称下输入名称。
-
在基本(经典)身份验证下,选择是否要激活基本流程。启用基本流程后,您可以绕过为自己选择的角色 IdPs ,AssumeRoleWithWebIdentity直接致电。有关更多信息,请参阅 身份池身份验证流程。
-
如果要将标签应用到身份池,请在标签下选择添加标签。
-
在查看并创建中,确认您为新身份池所做的选择。选择编辑以返回向导并更改任何设置。完成后,选择创建身份池。
用户IAM角色
IAM角色定义用户访问 AWS 资源的权限,例如Amazon Cognito Sync。您的应用程序用户将担任您创建的角色。您可以为经过身份验证和未经身份验证的用户指定不同角色。要了解有关IAM角色的更多信息,请参阅IAM角色。
经过身份验证和未经身份验证的身份
Amazon Cognito 身份池同时支持经过身份验证和未经身份验证的身份。经过身份验证的身份属于已通过任何受支持的身份提供商进行身份验证的用户。未经身份验证的身份通常属于来宾用户。
-
要使用公共登录提供商配置经过身份验证的身份,请参阅 身份池第三方身份提供商。
-
要配置您自己的后端身份验证流程,请参阅 经开发人员验证的身份。
激活或停用访客访问权限
Amazon Cognito 身份池访客访问(未经身份验证的身份)为未向身份提供者进行身份验证的用户提供唯一标识符和 AWS 证书。如果应用程序允许未登录的用户进行访问,则您可以针对未经身份验证的身份激活访问权限。要了解更多信息,请参阅 开始使用 Amazon Cognito 身份池。
更新身份池中的访客访问权限
-
从 Amazon Cognito 控制台
中选择身份池。选择身份池。 -
选择用户访问选项卡。
-
找到访客访问权限。在目前不支持访客访问的身份池中,状态为非活动。
-
如果访客访问权限处于活动状态并且您想将其停用,请选择停用。
-
如果访客访问权限处于非活动状态而您想要将其激活,请选择编辑。
-
为身份池中的访客用户选择默认IAM角色。
-
如果您希望 Amazon Cognito 为您创建一个具有基本权限并与您的身份池建立信任关系的新角色,请选择创建新角色。IAM例如,输入IAM角色名称以标识您的新角色
myidentitypool_authenticatedrole
。选择 “查看策略文档”,查看 Amazon Cognito 将分配给您的新IAM角色的权限。 -
如果您的IAM AWS 账户 角色中已经有要使用的角色,则可以选择使用现有角色。您必须将IAM角色信任策略配置为包括
cognito-identity.amazonaws.com
。配置您的角色信任策略,以仅允许 Amazon Cognito 在提供证据证明请求来自您的特定身份池中经过身份验证的用户时,才代入该角色。有关更多信息,请参阅 角色信任和权限。 -
选择保存更改。
-
要激活访客访问权限,请在用户访问权限选项卡中选择激活。
-
-
-
更改与身份类型关联的角色
身份池中的每个身份要么经过身份验证,要么未经过身份验证。经过身份验证的身份属于由公共登录提供商(Amazon Cognito 用户池、Login with Amazon、Amazon 登录、使用苹果登录、Facebook SAML、Google 或任何 OpenID Connect 提供商)或开发者提供商(您自己的后端身份验证流程)进行身份验证的用户。未经身份验证的身份通常属于来宾用户。
每个身份类型都有一个分配的角色。此角色附有策略,规定 AWS 服务 该角色可以访问哪个角色。Amazon Cognito 接收请求后,服务将确定身份类型、确定分配给该身份类型的角色,并使用附加到该角色的策略进行响应。通过修改策略或为身份类型分配不同的角色,您可以控制哪些 AWS 服务 身份类型可以访问。要查看或修改与身份池中的角色关联的策略,请参阅AWS IAM控制台
更改身份池的原定设置经过身份验证或未经身份验证的角色
-
从 Amazon Cognito 控制台
中选择身份池。选择身份池。 -
选择用户访问选项卡。
-
找到访客访问权限或经过身份验证的访问权限。在当前未为该访问类型配置的身份池中,状态为非活动。选择编辑。
-
为身份池中的访客或经过身份验证的用户选择默认IAM角色。
-
如果您希望 Amazon Cognito 为您创建一个具有基本权限并与您的身份池建立信任关系的新角色,请选择创建新角色。IAM例如,输入IAM角色名称以标识您的新角色
myidentitypool_authenticatedrole
。选择 “查看策略文档”,查看 Amazon Cognito 将分配给您的新IAM角色的权限。 -
如果您的IAM AWS 账户 角色中已经有要使用的角色,则可以选择使用现有角色。您必须将IAM角色信任策略配置为包括
cognito-identity.amazonaws.com
。配置您的角色信任策略,以仅允许 Amazon Cognito 在提供证据证明请求来自您的特定身份池中经过身份验证的用户时,才代入该角色。有关更多信息,请参阅 角色信任和权限。
-
-
选择保存更改。
编辑身份提供者
如果您允许用户通过使用者身份提供者(例如,Amazon Cognito 用户群体、Login with Amazon、通过 Apple 登录、Facebook 或 Google)进行身份验证,则您可以在 Amazon Cognito 身份池(联合身份)控制台中指定应用程序标识符。上述操作会将应用程序 ID (由公共登录提供商提供) 与身份池关联。
您还可以从此页面为每个提供商配置身份验证规则。每个提供商最多可以有 25 个规则。规则按您为各个提供商保存的顺序应用。有关更多信息,请参阅 使用基于角色的访问控制。
警告
更改身份池中关联的 IdP 应用程序 ID 可防止现有用户通过该身份池进行身份验证。有关更多信息,请参阅 身份池第三方身份提供商。
更新身份池身份提供者(IdP)
-
从 Amazon Cognito 控制台
中选择身份池。选择身份池。 -
选择用户访问选项卡。
-
找到身份提供者。选择要编辑的身份提供者。如果要添加新的 IdP,请选择添加身份提供者。
-
如果您选择添加身份提供者,请选择要添加的身份类型之一。
-
-
要更改应用程序 ID,请在身份提供者信息中选择编辑。
-
要更改 Amazon Cognito 在向通过该提供者进行身份验证的用户颁发凭证时请求的角色,请在角色设置中选择编辑。
-
您可以为该 IdP 中的用户分配您在配置经过身份验证的角色时设置的原定设置角色,也可以使用规则选择角色。使用 Amazon Cognito 用户群体 IdP,还可以选择令牌中包含 preferred_role 声明的角色。有关
cognito:preferred_role
声明的更多信息,请参阅将优先级值分配到组。-
如果您选择使用规则选择角色,请输入用户身份验证中的来源声明、您要用来比较声明的运算符、导致与该角色选择匹配的值,以及当角色分配匹配时要分配的角色。选择添加其他,以根据不同的条件创建其他规则。
-
选择角色解析。当用户的声明与您的规则不匹配时,您可以拒绝凭证或为经过身份验证的角色颁发凭证。
-
-
-
要更改 Amazon Cognito 在向通过该提供者进行身份验证的用户颁发凭证时分配的主体标签,请在访问控制属性中选择编辑。
-
如果不应用主体标签,请选择非活动。
-
要基于
sub
和aud
声明应用主体标签,请选择使用原定设置映射。 -
要为主体标签创建自己的自定义属性模式,请选择使用自定义映射。然后,对于您要在标签中表示的每个声明,输入要从该声明中获取的标签键。
-
-
选择保存更改。
删除身份池
您不能撤消身份池删除。删除身份池后,所有依赖该身份池的应用程序和用户将停止工作。
删除身份池
-
从 Amazon Cognito 控制台
中选择身份池。选中要删除的身份池旁边的单选按钮。 -
选择删除。
-
输入或粘贴身份池的名称,然后选择删除。
警告
选择删除按钮后,您将永久删除身份池和其中包含的所有用户数据。删除身份池将导致使用身份池的应用程序和其他服务停止工作。
从身份池删除身份
当您从身份池中删除身份时,您会删除 Amazon Cognito 为该联合用户存储的身份信息。当用户再次请求凭证时,如果身份池仍然信任用户的身份提供者,则用户会收到新的身份 ID。您无法撤消此操作。
删除身份
-
从 Amazon Cognito 控制台
中选择身份池。选择身份池。 -
选择身份浏览器选项卡。
-
选中要删除的身份旁边的复选框,然后选择删除。确认您要删除这些身份,然后选择删除。
将 Amazon Cognito Sync 与身份池一起使用
Amazon Cognito Sync 是一个 AWS 服务 和客户端库,它使跨设备同步与应用程序相关的用户数据成为可能。Amazon Cognito 可以跨移动设备和 Web 同步用户配置文件数据,无需使用您自己的后端。客户端库在本地缓存数据,因此,您的应用程序可以读取和写入数据,无论设备是否处于连接状态,都是如此。设备处于在线状态时,您可以同步数据。如果您设置推送同步,您可在更新可用时立即通知其他设备。
管理数据集
如果您在应用程序中实施了 Amazon Cognito Sync 功能,则 Amazon Cognito 身份池控制台允许您手动创建和删除各个身份的数据集和记录。对于您在 Amazon Cognito 身份池控制台中对身份的数据集或记录做出的任何更改,只有当您在控制台中选择 Synchronize(同步)后才会保存。直到身份调用 Synchronize(同步)后,终端用户才能看到更改。一旦刷新特定身份的列表数据集页面,从其它设备同步的有关各个身份的数据即会显示。
为身份创建数据集
Amazon Cognito Sync 将数据集与一个身份关联起来。您可以在数据集中填充该身份所代表的用户的身份信息,然后将该信息同步到用户的所有设备。
将数据集和数据集记录添加到身份
-
从 Amazon Cognito 控制台
中选择身份池。选择身份池。 -
选择身份浏览器选项卡。
-
选择要编辑的身份。
-
在数据集中,选择创建数据集。
-
输入数据集名称并选择创建数据集。
-
如果您想向数据集添加记录,请从身份详细信息中选择您的数据集。在记录中,选择创建记录。
-
输入记录的键和值。选择确认。重复此操作以添加更多记录。
删除与身份关联的数据集
从身份中删除数据集及其记录
-
从 Amazon Cognito 控制台
中选择身份池。选择身份池。 -
选择身份浏览器选项卡。
-
选择包含要删除的数据集的身份。
-
在数据集中,选择要删除的数据集旁边的单选按钮。
-
选择删除。查看您的选择,然后再次选择删除。
批量发布数据
批量发布可用于将存储在 Amazon Cognito Sync 存储中的数据导出到 Amazon Kinesis Stream。有关如何批量发布所有流的说明,请参阅 实现 Amazon Cognito 同步流。
激活推送同步
Amazon Cognito 会自动跟踪身份和设备之间的关联。通过使用推送同步功能,可以确保在身份数据发生更改时通知给定身份的每个实例。推送同步可以确保,只要身份的数据集发生更改,与该身份关联的所有设备就会收到一个静音推送通知,通知它们所发生的更改。
您可以在 Amazon Cognito 控制台中激活推送同步。
激活推送同步
-
从 Amazon Cognito 控制台
中选择身份池。选择身份池。 -
选择身份池属性选项卡。
-
在推送同步中,选择编辑
-
选择激活与身份池的推送同步。
-
选择您在当前版本中创建的亚马逊简单通知服务 (AmazonSNS) 平台应用程序之一 AWS 区域。Amazon Cognito 向您的平台应用程序发布推送通知。选择 “创建平台应用程序”,导航至 Amazon SNS 控制台并创建一个新的控制台。
-
要发布到您的平台应用程序,Amazon Cognito 将在您的平台应用程序中IAM扮演角色。 AWS 账户如果您希望 Amazon Cognito 为您创建一个具有基本权限并与您的身份池建立信任关系的新角色,请选择创建新角色。IAM例如,输入IAM角色名称以标识您的新角色
myidentitypool_authenticatedrole
。选择 “查看策略文档”,查看 Amazon Cognito 将分配给您的新IAM角色的权限。 -
如果您的IAM AWS 账户 角色中已经有要使用的角色,则可以选择使用现有角色。您必须将IAM角色信任策略配置为包括
cognito-identity.amazonaws.com
。配置您的角色信任策略,以仅允许 Amazon Cognito 在提供证据证明请求来自您的特定身份池中经过身份验证的用户时,才代入该角色。有关更多信息,请参阅 角色信任和权限。 -
选择保存更改。
设置 Amazon Cognito Streams
Amazon Cognito Streams 让开发人员能够控制和了解他们存储在 Amazon Cognito Sync 中的数据。开发人员现在可以配置 Kinesis 流以接收数据形式的事件。Amazon Cognito 可以实时向您拥有的 Kinesis 流推送每个数据集更改。有关如何在 Amazon Cognito 控制台中设置 Amazon Cognito Streams 的说明,请参阅实现 Amazon Cognito 同步流。
设置 Amazon Cognito Events
Amazon Cognito Events 允许您运行 AWS Lambda 函数以响应 Amazon Cognito Sync 中的重要事件。当数据集得到同步时,Amazon Cognito Sync 会引发同步触发事件。当用户更新数据时,您可以使用同步触发事件采取行动。有关从控制台设置 Amazon Cognito Events 的说明,请参阅使用 Amazon Cognito 活动自定义工作流程。
要了解更多信息 AWS Lambda,请参阅AWS Lambda