Amazon Cognito 身份池入门
借助 Amazon Cognito 身份池,您可以创建唯一身份并为用户分配权限。身份池可以从以下类型的身份验证服务中引入身份:
-
Amazon Cognito 用户池中的用户
-
通过外部身份提供商(例如 Facebook、Google、Apple 或 OIDC 或 SAML 身份提供商)进行身份验证的用户。
-
通过您自己的现有身份验证流程进行身份验证的用户
用户向其提供者进行身份验证并向身份池出示授权后,他们会获得临时 Amazon 凭证。用户的凭证具有您为访问其他 Amazon Web Services 服务 而定义的权限。
在 Amazon Cognito 中创建一个身份池
您可以通过 Amazon Cognito 控制台创建身份池,或者,您还可以使用 Amazon Command Line Interface(CLI)或 Amazon Cognito API。以下过程是在控制台中创建新身份池的通用指南。您也可以直接跳到控制台
在控制台中创建新的身份池
-
登录 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。有关更多信息,请参阅 身份池身份验证流程。
-
如果要将标签应用到身份池,请在标签下选择添加标签。
-
在查看并创建中,确认您为新身份池所做的选择。选择编辑以返回向导并更改任何设置。完成后,选择创建身份池。
设置 SDK
要使用 Amazon Cognito 身份池,请设置 Amazon Amplify、Amazon SDK for Java 或 Amazon SDK for .NET。有关更多信息,请参阅以下主题。
-
《Amazon SDK for JavaScript 开发人员指南》中的设置适用于 JavaScript 的 SDK
-
《Amplify 开发中心》中的 Amplify 文档
-
《Amazon SDK for .NET 开发人员指南》中的 Amazon Cognito 凭证提供者
集成身份提供商
Amazon Cognito 身份池(联合身份)通过 Amazon Cognito 用户群体、联合身份提供者(包括 Amazon、Facebook、Google、Apple 和 SAML 身份提供者)以及未经身份验证的身份支持用户身份验证。此功能还支持 经开发人员验证的身份,这让您能够通过自己的后端身份验证流程注册并对用户进行身份验证。
要了解有关使用 Amazon Cognito 用户池创建自己的用户目录的更多信息,请参阅Amazon Cognito 用户群体和在登录后使用身份池访问 Amazon Web Services 服务。
要了解有关使用外部身份提供商的更多信息,请参阅 身份池第三方身份提供者。
要了解有关集成自己的后端身份验证流程的更多信息,请参阅经开发人员验证的身份。
获取凭证
Amazon Cognito 身份池为来宾用户(未经身份验证)及经过身份验证并收到了令牌的用户提供临时的Amazon凭证。借助这些 Amazon 凭证,您的应用程序可以通过 Amazon API Gateway 在 Amazon 内部或 Amazon 外部安全地访问后端。请参阅 获取凭证。