我正在使用 Cognito 托管 UI 解决方案构建企业应用程序并联合登录,人们可以使用任何电子邮件单独注册,但他们也可能为与我们签署了企业协议并使用 SSO 的公司工作。
所需的工作流程是他们输入他们的登录电子邮件,然后对照我们的 SAML 单点登录提供商列表进行检查,如果他们与使用 SSO 的企业客户匹配,他们将被发送到适当的联合页面;如果它们不匹配,它们将被带到通用登录。
到目前为止,我已成功使用 Hosted UI 和关键idpIdentifier参数成功创建了所需的行为。以下 React 代码总结了它的工作原理:
hostedUILogin() {
const idpIdentifier = this.state.email.split("@")[1];
let url = `https://${domain}/oauth2/authorize?response_type=code&client_id=${clientId}&redirect_uri=${redirectSignIn}`;
if (idpIdentifier) {
url += `&idp_identifier=${idpIdentifier}`;
}
window.location.assign(url);
}
这会产生预期的效果。当有人使用以“@corporatecustomer.com”结尾的电子邮件地址登录时,他们将被带到公司联盟的 SSO 页面。当有人使用“@gmail.com”登录时,他们会被带到 Cognito 托管 UI。
不幸的是,托管 UI 似乎无法帮助自己,只能在左侧展示我们的客户列表。

我无法在文档或教程中发现使用 Cognito 托管 UI 的任何方式,而无需在左侧宣传所有可用的 SAML 提供程序,从而泄露我们的客户列表。
我已尝试在 App Client 配置中删除此 Hosted UI App 的 IDP,但随后它不再通过 idp_identifier 成功捕获。