如何将多区域和多账户 Amazon Cognito 用户群体与 Amazon Cognito 身份群体集成?

1 分钟阅读
0

当 Amazon Cognito 用户群体与 Amazon Cognito 身份群体位于不同的账户时,我需要将它们集成在一起。

简短描述

当用户登录您的应用程序时,Amazon Cognito 会验证登录信息。成功登录后,Amazon Cognito 用户群体会创建会话并将 ID、访问权限和刷新令牌返回给经过身份验证的用户。

Amazon Cognito 身份群体为未经身份验证的访客用户和从支持的身份提供者(IdP)接收令牌的经过身份验证的用户,提供临时 AWS 凭证。使用这些 AWS 凭证,您的应用程序可以安全地访问 AWS 服务。

您可以将 Amazon Cognito 用户群体与位于不同 AWS 账户中的 Amazon Cognito 身份群体集成。使用此配置,您的用户可以在一个账户的用户群体中进行身份验证。然后,为了访问 AWS 服务,您的用户使用他们从另一个账户的身份群体中获得的临时 AWS 凭证。

解决方法

以下跨账户场景是配置示例。

Amazon Cognito 用户群体位于美国东部(弗吉尼亚州北部)AWS 区域的 Account-A 中。Amazon Cognito 身份群体位于亚太地区(孟买)区域的 Account-B 中。

在这种情况下,对于使用 Account-A 用户群体进行身份验证的用户,您必须从 Account-B 身份群体获取临时凭证。您必须将 Account-A 用户群体作为身份验证提供者添加到 Account-B 身份群体。

要将用户群体添加为身份验证提供者,请执行以下步骤:

1.    在 Account-A 中打开新的 Amazon Cognito 控制台

2.    选择 User Pools(用户群体),然后从列表中选择相应的用户群体。

3.    复制并从外部保存 User pool ID(用户群体 ID)和 App client id(应用程序客户端 ID)的值。

作为身份验证提供者的用户群体示例:

Account-A 用户群体
**用户群体 ID:**us-east-1_xxxxxxxxx
**应用程序客户端 ID:**79i7hhxxxxxxxx1d5iciiu7

4.    在 Account-B 中打开新的 Amazon Cognito 控制台,然后选择 Federated identities(联合身份)。

5.    从身份群体列表中,选择相应的身份群体。

6.    选择 Edit identity pool(编辑身份群体)。将出现 Edit identity pool(编辑身份群体)页面。

7.    向下滚动并选择 Authentication providers(身份验证提供者)以显示身份验证提供者选项。

8.    对于 User pool ID(用户群体 ID),粘贴您之前复制的用户群体 ID。

9.    对于 App client id(应用程序客户端 ID),粘贴您之前复制的应用程序客户端 ID。

10.    保存所做更改。

调用 UpdateIdentityPool API 将用户群体添加为身份验证提供者。

update-identity-pool 命令示例:

aws cognito-identity update-identity-pool --identity-pool-id example_identity_pool_id --identity-pool-name example_identity_pool_name --no-allow-unauthenticated-identities --cognito-identity-providers ProviderName=cognito-idp.example_region.amazonaws.com/example_user_pool_id,ClientId=example_app_client_id,ServerSideTokenCheck=false --region example_region

update-identity-pool 命令的描述:

  • example_identity_pool_id 对应于 Account-B 中的身份群体 ID。示例:ap-south-1:12345678-abcd-abcd-abcd-1234567890ab。
  • example_app_client_id 表示来自 Account-A 的客户端 ID。示例:79i7hhxxxxxxxx1d5iciiu7。
  • example_region 表示身份群体的区域。示例:ap-south-1。
  • example_identity_pool_name 对应于身份群体名称。示例:test-pool。
  • example_user_pool_id 表示来自 Account-A 的用户群体。示例:us-east-1_xxxxxxxxx。

**重要提示:**由于 UpdateIdentityPool API 会重置身份群体的现有配置,因此请先调用 DescribeIdentityPool API。然后,将所有现有的身份群体参数发送到 UpdateIdentityPool API。


AWS 官方
AWS 官方已更新 1 年前