小编Bil*_*den的帖子

如何在 Cognito Hosted UI 中启用 SAML 联合而不公布他们的客户列表?

我正在构建一个企业应用程序并使用 Cognito Hosted UI 解决方案联合登录,人们可以使用任何电子邮件单独注册,但他们也可能为与我们签署企业协议并使用 SSO 的公司工作。

所需的工作流程是他们输入他们的登录电子邮件,然后根据我们的 SAML 单点登录提供商列表进行检查,如果他们匹配使用 SSO 的企业客户端,他们将被发送到适当的联合页面;如果它们不匹配,它们将被带到通用登录。

到目前为止,我已经成功地使用托管 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);

    }
Run Code Online (Sandbox Code Playgroud)

这会产生所需的效果。当有人使用以“@corporatecustomer.com”结尾的电子邮件地址登录时,他们将被带到公司联盟的 SSO 页面。当有人使用“@gmail.com”登录时,他们会被带到 Cognito Hosted UI。

不幸的是,托管 UI 似乎无能为力,只能在左侧展示我们的客户列表。

截屏

我无法在文档或教程中发现使用 Cognito 托管 UI 的任何方式,而无需在左侧宣传所有可用的 SAML 提供商,从而泄露我们的客户列表。

我曾尝试在 App Client 配置中移除此托管 UI 应用程序的 IDP,但随后它不再通过 idp_identifier 成功捕获。

identity single-sign-on amazon-cognito

5
推荐指数
1
解决办法
234
查看次数

标签 统计

amazon-cognito ×1

identity ×1

single-sign-on ×1