我想为我的 Amazon Cognito 用户群体配置第三方身份提供商 (IdP) 的 AWS IAM Identity Center(前身为 AWS 单点登录)。
简述
Amazon Cognito 用户群体允许通过第三方身份提供者 (IdP) 登录。用户可以使用 IAM Identity Center 通过安全声明标记语言版本 2.0 (SAML 2.0) IdP 进行联合。有关更多信息,请参阅 联合登录在 Amazon Cognito 用户群体中的工作方式。
与 IAM Identity Center 集成的用户群体允许用户从 Amazon Cognito 获取用户群体令牌。有关更多信息,请参阅将令牌与用户池结合使用。
解决方法
要将 Amazon Cognito 用户群体与 IAM Identity Center 集成,请执行以下步骤。
**注意:**如果您已经拥有带有应用程序客户端的用户群体,请跳过以下部分。
创建一个包含应用客户端和域名的 Amazon Cognito 用户群体
-
创建用户群体。
-
添加应用程序客户端并设置托管 Web 用户界面。
-
为您的用户群体添加域名。
**注意:**如果您已经有一个正常运行的 IAM Identity Center 环境,请跳过以下部分。
激活 IAM Identity Center 并添加用户
-
在激活 IAM Identity Center 之前,请查看先决条件和注意事项。
-
激活 IAM Identity Center。
-
选择您的身份来源并创建用户。
从 IAM Identity Center 控制台配置 SAML 应用程序
-
打开 IAM Identity Center 控制台,然后从导航窗格中选择应用程序。
-
选择添加应用程序 和添加自定义 SAML 2.0 应用程序,然后选择下一步。
-
在配置应用程序页面上,输入显示名称和描述。
-
复制 IAM Identity Center SAML 元数据文件的 URL 或选择下载超链接。在后面的步骤中,您将使用这些资源在用户群体中创建 IdP。
-
在应用程序元数据下,选择手动键入您的元数据值。然后提供以下值。
**重要事项:**请务必将 domain-prefix、region 和 userpool-id 值替换为您的环境特有的信息。
应用程序声明消费者服务 (ACS) URL:https://<domain-prefix>.auth.<region>.amazoncognito.com/saml2/idpresponse
应用程序 SAML 受众:urn:amazon:cognito:sp:<userpool-id>
-
选择提交。然后,转到您添加的应用程序的详细信息页面。
-
选择操作下拉列表并选择编辑属性映射。然后,提供以下属性。
应用程序中的用户属性:主题 **
注意:****主题已预先填写。
映射到 IAM Identity Center 中的此字符串值或用户属性:${user:subject}**
格式: Persistent
应用程序中的用户属性:email
映射到 IAM Identity Center 中的此字符串值或用户属性:${user:email}
格式: Basic
映射的属性将在登录时发送到 Amazon Cognito。确保您的用户群体的所有必需属性都已映射到此处。要了解有关可用于映射的属性的更多信息,请参阅Supported IAM Identity Center attributes。
-
保存您的更改。
-
选择分配用户按钮,然后将您的用户分配给应用程序。
在您的用户群体中将 IAM Identity Center 配置为 SAML IdP
- 在您的用户群体中配置 SAML IdP。应用以下设置:
在元数据文档下,提供元数据 URL 或上传您在上一节的步骤 4 中下载的文件。有关更多信息,请参阅将第三方 SAML 身份提供商与 Amazon Cognito 用户群体集成。
输入您的 SAML 提供商名称。有关更多信息,请参阅选择 SAML 身份提供商名称。
(可选)输入任何 SAML 标识符。
- 配置 SAML 提供商属性映射。应用以下设置:
在 SAML 属性字段中,提供与上一节步骤 7 中提供的用户属性值相匹配的电子邮件值。在用户群体属性字段中,从下拉列表中选择电子邮件。
**注意:**添加上一节步骤 7 中在 IAM Identity Center 配置的任何其他属性。
- 保存您的更改。
将 IdP 与用户群体应用程序客户端集成
-
登录新的 Amazon Cognito 控制台。
-
选择用户群体,然后选择相应的用户群体。
-
选择应用程序集成选项卡,然后选择应用程序客户端列表。
-
选择相应的应用程序客户端。
-
从托管用户界面部分,选择编辑。
-
选择相应的 IdP。
-
保存您的更改。
测试设置
- 使用以下命名模式启动托管 UI 或构造登录端点 URL:
https://example_domain_prefix.auth.example_region.amazoncognito.com/login?response_type=token&client_id=example_client_id&redirect_uri=example_redirect_url
例如:https://my-user-pool.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=a1b2c3d4e5f6g7h8i9j0k1l2m3&redirect_uri=https://example.com
对于 OAuth 2.0 授权类型,请选择授权码授权,这样登录端点会在用户登录时提示 Amazon Cognito 返回授权码。对于 OAuth 2.0 授权类型,请选择 Amazon Cognito 的隐式授权,以便在用户登录时返回访问令牌。然后,将 URL 中的 response_type=code 替换为 response_type=token。
- 选择 IAM IdC。
如果您被重定向到应用程序客户端的回调 URL,则表示您已经以用户身份在浏览器中登录。用户群体令牌会直接显示在 Web 浏览器地址栏的 URL 中。
注意:要跳过此步骤,请使用以下命名模式创建授权端点 URL:
https://yourDomainPrefix.auth.region.amazoncognito.com/oauth2/authorize?response_type=token&identity_provider=samlProviderName&client_id=yourClientId&redirect_uri=redirectUrl&scope=allowedOauthScopes
-
输入用户凭证并选择登录。
-
当您被重定向到浏览器地址栏中包含来自 Amazon Cognito 的代码或令牌的回传 URL 时,设置就完成了。
**注意:**Amazon Cognito 仅支持服务提供商 (SP) 发起的登录。您必须使用登录端点或授权端点来测试设置。使用 IAM Identity Center 的 AWS 访问门户启动由 IdP 发起的登录不起作用。