Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
Amazon Cognito 身份池入门(联合身份)
借助 Amazon Cognito 身份池,您可以创建唯一身份并为用户分配权限。您的身份池可以包括:
借助身份池,您可以获取带有您定义的权限的临时 Amazon 凭证,以直接访问其它 Amazon Web Services 或通过 Amazon API Gateway 访问资源。
在 Amazon Cognito 中创建一个身份池
您可以通过 Amazon Cognito 控制台创建身份池,或者,您还可以使用 Amazon Command Line Interface(CLI)或 Amazon Cognito API。
- New console
-
在控制台中创建新的身份池
-
登录 Amazon Cognito 控制台并选择身份池。
-
选择创建身份池。
-
在配置身份池信任中,选择将您的身份池设置为经过身份验证的访问权限和/或访客访问权限。
-
如果您选择了经过身份验证的访问权限,请在身份池中选择一个或多个您要设置为经过身份验证的身份来源的身份类型。如果您配置了自定义开发人员提供者,则在创建身份池后无法对其进行修改或删除。
-
在配置权限中,为身份池中经过身份验证的用户或访客用户选择原定设置 IAM 角色。
-
如果您希望 Amazon Cognito 为您创建一个具有基本权限并与您的身份池建立信任关系的新角色,请选择创建新的 IAM 角色。例如,输入 IAM 角色名称以标识您的新角色,例如 myidentitypool_authenticatedrole
。选择查看策略文档以查看 Amazon Cognito 将分配给新 IAM 角色的权限。
-
如果您的 Amazon Web Services 账户中已经有想要使用的角色,则可以选择使用现有的 IAM 角色。您必须将您的 IAM 角色信任策略配置为包括 cognito-identity.amazonaws.com
。配置您的角色信任策略,以仅允许 Amazon Cognito 在提供证据证明请求来自您的特定身份池中经过身份验证的用户时,才代入该角色。有关更多信息,请参阅角色信任和权限。
-
在连接身份提供者中,输入您在配置身份池信任中选择的身份提供者(IdP)的详细信息。可能会要求您提供 OAuth 应用程序客户端信息、选择 Amazon Cognito 用户群体、选择 IAM IdP 或输入开发人员提供者的自定义标识符。
-
为每个 IdP 选择角色设置。您可以为该 IdP 中的用户分配您在配置经过身份验证的角色时设置的原定设置角色,也可以使用规则选择角色。使用 Amazon Cognito 用户群体 IdP,还可以选择令牌中包含 preferred_role 声明的角色。有关 cognito:preferred_role
声明的更多信息,请参阅将优先级值分配到组。
-
如果您选择使用规则选择角色,请输入用户身份验证中的来源声明、您要用来比较声明的运算符、导致与该角色选择匹配的值,以及当角色分配匹配时要分配的角色。选择添加其他,以根据不同的条件创建其他规则。
-
选择角色解析。当用户的声明与您的规则不匹配时,您可以拒绝凭证或为经过身份验证的角色颁发凭证。
-
您可以为每个 IdP 配置访问控制属性。访问控制属性将用户声明映射到 Amazon Cognito 应用于其临时会话的主体标签。您可以构建 IAM policy,以根据应用于用户会话的标签来筛选用户访问权限。
-
如果不应用主体标签,请选择非活动。
-
要基于 sub
和 aud
声明应用主体标签,请选择使用原定设置映射。
-
要为主体标签创建自己的自定义属性模式,请选择使用自定义映射。然后,对于您要在标签中表示的每个声明,输入要从该声明中获取的标签键。
-
在配置属性中,在身份池名称下输入名称。
-
在基本(经典)身份验证下,选择是否要激活基本流程。在基本流程处于活动状态的情况下,您可以绕过为 IdP 所做的角色选择,直接调用 AssumeRoleWithWebIdentity。有关更多信息,请参阅身份池(联合身份)身份验证流程。
-
如果要将标签应用到身份池,请在标签下选择添加标签。
-
在查看并创建中,确认您为新身份池所做的选择。选择编辑以返回向导并更改任何设置。完成后,选择创建身份池。
- Original console
-
在控制台中创建新的身份池
-
登录到 Amazon Cognito 控制台,选择 Manage identity pools(管理身份池),然后选择 Create new identity pool(创建新的身份池)。
-
为身份池键入一个名称。
-
要启用未经身份验证的身份,请从 Unauthenticated identities(未经身份验证的身份)的可折叠部分中选择 Enable access to unauthenticated identities(启用访问未经身份验证的身份)。
-
如果需要,请在身份验证提供商部分中配置身份验证提供商。
-
选择 Create Pool(创建池)。
-
系统将提示您访问您的Amazon资源。
选择 Allow(允许)以创建两个与您的身份池关联的默认角色,一个用于未经身份验证的用户,另一个用于经过身份验证的用户。这些默认角色会向 Amazon Cognito Sync 提供身份池访问权限。您可以在 Amazon Identity and Access Management(IAM)控制台中修改与身份池关联的角色。
设置 SDK
要使用 Amazon Cognito 身份池,请设置 Amazon Amplify、Amazon SDK for Java 或 Amazon SDK for .NET。有关更多信息,请参阅以下主题。
集成身份提供商
Amazon Cognito 身份池(联合身份)通过 Amazon Cognito 用户群体、联合身份提供者(包括 Amazon、Facebook、Google、Apple 和 SAML 身份提供者)以及未经身份验证的身份支持用户身份验证。此功能还支持 经开发人员验证的身份(身份池),这让您能够通过自己的后端身份验证流程注册并对用户进行身份验证。
要了解有关使用 Amazon Cognito 用户池创建自己的用户目录的更多信息,请参阅Amazon Cognito 用户池和在登录后使用身份池访问 Amazon 服务。
要了解有关使用外部身份提供商的更多信息,请参阅 身份池(联合身份)外部身份提供商。
要了解有关集成自己的后端身份验证流程的更多信息,请参阅经开发人员验证的身份(身份池)。
获取凭证
Amazon Cognito 身份池为来宾用户(未经身份验证)及经过身份验证并收到了令牌的用户提供临时的Amazon凭证。借助这些 Amazon 凭证,您的应用程序可以通过 Amazon API Gateway 在 Amazon 内部或 Amazon 外部安全地访问后端。请参阅获取凭证。