本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
登录后 AWS 服务 使用身份池进行访问
用户使用用户池登录后,他们可以使用身份池颁发的临时 API 凭证进行访问 AWS 服务 。
您的 Web 应用程序或移动应用程序接收来自用户池的令牌。当您将用户池配置为身份池的身份提供者时,身份池会用令牌交换临时 AWS 证书。这些证书的范围可以限于 IAM 角色及其策略,这些策略允许用户访问有限的 AWS 资源。有关更多信息,请参阅 身份池身份验证流程。
下图显示了应用程序如何使用用户池登录、检索身份池凭证以及如何从 AWS 服务请求资产。
您可以使用身份池凭证来完成以下操作:
-
使用用户自己的凭证向 Amazon Verified Permissions 提出精细的授权请求。
-
连接到 Amazon API Gateway REST API 或授权与 IAM 连接的 AWS AppSync GraphQL API。
-
连接到使用 IAM 授权连接的数据库后端,例如 Amazon DynamoDB 或 Amazon RDS。
-
从 Amazon S3 存储桶检索应用程序资产。
-
使用 Amazon WorkSpaces 虚拟桌面启动会话。
身份池不仅在经过用户池认证的会话中运行。它们还直接接受来自第三方身份提供者的身份验证,并且可为未经身份验证的访客用户生成凭证。
有关使用身份池和用户池组来控制对 AWS 资源的访问的更多信息,请参阅向用户池添加组和使用基于角色的访问控制。另外,有关身份池和的更多信息 AWS Identity and Access Management,请参阅身份池身份验证流程。
使用设置用户池 AWS 管理控制台
创建 Amazon Cognito 用户池并记下每个客户端应用程序的用户池 ID 和应用程序客户端 ID。有关创建用户池的更多信息,请参阅用户池入门。
使用设置身份池 AWS 管理控制台
以下过程介绍如何使用将 AWS 管理控制台 身份池与一个或多个用户池和客户端应用程序集成。
添加 Amazon Cognito 用户池身份提供者 (IdP)
-
从 Amazon Cognito 控制台
中选择身份池。选择身份池。 -
选择用户访问选项卡。
-
选择添加身份提供者。
-
选择 Amazon Cognito 用户池。
-
输入用户池 ID 和应用程序客户端 ID。
-
要设置 Amazon Cognito 在向通过该提供者进行身份验证的用户颁发凭证时请求的角色,请配置角色设置。
-
您可以为该 IdP 中的用户分配您在配置经过身份验证的角色时设置的原定设置角色,也可以使用规则选择角色。使用 Amazon Cognito 用户池 IdP,还可以选择令牌中包含 preferred_role 声明的角色。有关
cognito:preferred_role声明的更多信息,请参阅将优先级值分配到组。-
如果您选择使用规则选择角色,请输入用户身份验证中的来源声明、您要用来将声明与规则进行比较的运算符、导致与该角色选择匹配的值,以及当角色分配匹配时要分配的角色。选择添加其他,以根据不同的条件创建其他规则。
-
如果您选择选择令牌中有 preferred_role 声明的角色,Amazon Cognito 会在您的用户的
cognito:preferred_role声明中为该角色发放凭证。如果不存在首选角色声明,Amazon Cognito 将根据您的角色解析发放凭证。
-
-
选择角色解析。当用户的声明与您的规则不匹配时,您可以拒绝凭证或为经过身份验证的角色颁发凭证。
-
-
要更改 Amazon Cognito 在向通过该提供者进行身份验证的用户颁发凭证时分配的主体标签,请配置访问控制属性。
-
如果不应用主体标签,请选择非活动。
-
要基于
sub和aud声明应用主体标签,请选择使用原定设置映射。 -
要为主体标签创建自己的自定义属性模式,请选择使用自定义映射。然后,对于您要在标签中表示的每个声明,输入要从该声明中获取的标签键。
-
-
选择保存更改。
将用户池与身份池集成
对您的应用程序用户进行身份验证后,将用户的身份令牌添加到凭证提供程序中的登录映射中。提供商名称取决于 Amazon Cognito 用户池 ID。结构如下所示:
cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>
您可以<region>从用户池 ID 中推导出值。例如,如果用户池 ID 为us-east-1_EXAMPLE1,则<region>为us-east-1。如果用户池 ID 为us-west-2_EXAMPLE2,则<region>为us-west-2。