选择 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.com
和 exampleA.co.uk
。第二家公司 AnyCompany B 拥有 exampleB.com
。对于此示例,您设置了两个 IdP,一个公司对应一个 IdP,如下所示:
-
对于 IdP A,您定义标识符
exampleA.com
和exampleA.co.uk
。 -
对于 IdP B,您定义标识符
exampleB.com
。
在您的应用程序中,您可以提示用户输入其电子邮件地址。您的应用程序从他们的电子邮件地址派生用户的域,并通过在对 /authorize
端点的调用的 idp_identifier
参数中提供域来将他们重定向到正确的 IdP。例如,如果用户输入 bob@exampleA.co.uk
,则用户将重定向到 IdP A。
Amazon Cognito 托管 UI 可以收集联合身份用户的电子邮件地址并解析域。为此,请为您分配给应用程序客户端的每个 SAML IdP 至少分配一个标识符。默认情况下,托管 UI 登录屏幕为您已分配到应用程序客户端的每个 IdP 显示一个按钮。如果您已成功分配标识符,则托管 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 设置的更多信息,请参阅为用户池配置身份提供商。