选择 SAML 身份提供商名称 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

选择 SAML 身份提供商名称

选择您的 SAML 身份提供者(IdP)的名称和标识符。SAML 提供者的名称最多可以包含 32 个字符,并且必须符合以下正则表达式:

[\p{L}\p{M}\p{S}\p{N}\p{P}\p{Z}]+|[^_\p{Z}][\p{L}\p{M}\p{S}\p{N}\p{P}][^_\p{Z}]+

您还可以为 SAML 提供商选择标识符。标识符将唯一解析为与用户群体关联的 IdP。通常,每个标识符均对应于 SAML IdP 所代表的一个组织域。对于多个组织共享的多租户应用程序,您可以使用标识符将用户重定向到正确的 IdP。由于同一个组织可以拥有多个域,因此您可以提供多个标识符。要使用标识符让用户登录,请使用idp_identifier 参数将他们的会话定向到您的应用程序客户端的 对端点授权

您可以为每个 SAML 提供商关联最多 50 个标识符。标识符在用户池中必须唯一。

您可以创建指向您的 Amazon Cognito 用户池 /authorize 终端节点的链接,以静默方式将您的用户重定向到您的 IdP 的登录页面。在对用户群体 /authorize 端点的请求中包含一个标识符作为 idp_identifier 参数。或者,您可以使用 IdP 的名称填充参数 identity_provider。采用以下 URL 格式:

https://your_Amazon_Cognito_userpool_domain/authorize?response_type=code&identity_provider=your-SAML-IdP-name&client_id=your-client-id&redirect_uri=https://your_application_redirect_url

用户使用您的 SAML IdP 登录后,他们会透明地将 SAML 响应提交到您的 saml2/idpresponse 终端节点。Amazon Cognito 通过重定向到您的应用程序客户端回调 URL 来回复 IdP 响应。用户没有看到与您的托管 UI 的任何交互。

以域格式创建 IdP 标识符以收集用户电子邮件地址并将其定向到与其域对应的 IdP 的登录页面。例如,假设您为两家不同公司的员工构建了一个应用程序供其使用。第一家公司 AnyCompany A 拥有 exampleA.comexampleA.co.uk。第二家公司 AnyCompany B 拥有 exampleB.com。对于此示例,您设置了两个 IdP,一个公司对应一个 IdP,如下所示:

  • 对于 IdP A,您定义标识符 exampleA.comexampleA.co.uk

  • 对于 IdP B,您定义标识符 exampleB.com

在您的应用程序中,您可以提示用户输入其电子邮件地址。您的应用程序从他们的电子邮件地址派生用户的域,并通过在对 /authorize 端点的调用的 idp_identifier 参数中提供域来将他们重定向到正确的 IdP。例如,如果用户输入 bob@exampleA.co.uk,则用户将重定向到 IdP A。

Amazon Cognito 托管 UI 可以收集联合身份用户的电子邮件地址并解析域。为此,请为您分配给应用程序客户端的每个 SAML IdP 至少分配一个标识符。默认情况下,托管 UI 登录屏幕为您已分配到应用程序客户端的每个 IdP 显示一个按钮。如果您已成功分配标识符,则托管 UI 登录页面将如下图所示。


                    Amazon Cognito 托管 UI 登录页面,显示本地用户登录和要求联合身份用户输入电子邮件地址的提示。

要使用此策略,您必须使用域作为 IdP 标识符。Amazon Cognito 从用户输入的电子邮件地址中提取电子邮件域。然后,Amazon Cognito 将电子邮件域作为请求中的 IdPIdentifier 参数添加到 /authorize 终端节点。您的用户在选择上图中显示的 Sign in(登录)按钮后会看到 IdP 登录页面。

  • 如果您仅将一个 SAML IdP 分配给您的应用程序客户端,则托管 UI 登录页面会显示一个用于使用该 IdP 登录的按钮。

  • 如果您为针对应用程序客户端激活的每个 SAML IdP 分配一个标识符,则托管 UI 登录页面中会出现一个用于输入电子邮件地址的框。

  • 如果您有多个 IdP,并且没有为所有 IdP 分配标识符,则托管页面将包含 IdP 列表。

  • 如果您已向 IdP 分配了标识符,并且希望托管 UI 显示一系列 IdP 按钮,请向您的应用程序客户端添加一个没有标识符的新 IdP,或者创建新的应用程序客户端。您也可以删除现有 IdP,然后在没有标识符的情况下重新添加它;请注意,这将在您的目录中创建新用户。

如果您有自定义 UI,则解析域名,以便它匹配您在添加 IdP 时分配的标识符。有关 IdP 设置的更多信息,请参阅为用户池配置身份提供商