如何使用 SAML 将 Okta 作为 IDP 与 Azure AD B2C 集成?

问题描述

我有我的 Azure AD B2C 租户,其中有一个应用程序使用 OpenIdConnect 与我的 AD 连接。

我一直在阅读有关如何添加一个可以通过 SAML 与我的 Azure AD B2C 租户通信的 IDP 的 MS 文档,为此我一直在使用 Okta 进行测试

  1. 用户可以登录其 okta 帐户
  2. 使用 okta 的仪表板用户可以点击我的应用程序(我的 Azure 租户中的一个设置)

但在内部我需要发生的是:

  1. Okta 将 SAML 包发送到我的 Azure AD B2C 租户(SAML Idp 已启动)
  2. 我的 Azure AD B2C 可以读取内容获取用户标识符(电子邮件
  3. 我的 Azure AD B2C 会读取从 SAML 包中获取的电子邮件,并检查该电子邮件是否已存在于我已注册用户中,如果存在,则用户有权登录
  4. 在 Azure AD B2C 确认用户可以继续后,它会使用 OpenIdConnect 将用户重定向到我的应用程序(我认为这种集成已经到位)

但是我在尝试将 okta 添加为 Azure AD B2C 中的 IdentityProvider 时遇到了一些困难,作为事实来源,我确实尝试过使用 direct federation,但它不起作用,所以继续尝试使用 custom policies 完成它,但我仍然无法理解它是如何工作的。用 samples 找到了这个 repo,而在我的研究中发现这个 link 基本上提到我不能这样做:

From okta support

我对这个非常新,所以想寻求任何帮助。如果可能的话,有什么想法或者我如何使用 SAML 集成它?找到的样本主要是使用 OpenIdConnect,如果用户不存在,那么大多数样本都会注册,这也不是我想要的。有什么帮助吗?

解决方法

Azure AD 不是 Azure AD B2C。两种不同的服务,不同的用途,不同的功能。

在 AAD B2C 中添加 SAML IdP 有一个端到端的演练:

https://docs.microsoft.com/en-us/azure/active-directory-b2c/identity-provider-generic-saml?tabs=windows&pivots=b2c-custom-policy

有一些 SAML IdP 的工作示例 https://docs.microsoft.com/en-us/azure/active-directory-b2c/identity-provider-salesforce-saml?tabs=windows&pivots=b2c-custom-policy

然后将 SAML 应用程序与 AAD B2C 连接 https://docs.microsoft.com/en-us/azure/active-directory-b2c/saml-service-provider?tabs=windows&pivots=b2c-custom-policy

如果 IdP 是联合 IdP(在您的情况下是 okta),则 AAD B2C 不支持 IdP 启动的登录到 SAML 应用程序,仅当 IdP 是 AAD B2C(本地帐户)时才受支持。

您不能先由 IdP 发起登录,然后让 AAD B2C 向应用发出 OIDC 响应。您应该使用 OIDC 联合到 Okta。它要简单得多并实现相同的用户体验。

https://docs.microsoft.com/en-us/azure/active-directory-b2c/saml-service-provider?tabs=windows&pivots=b2c-custom-policy#supported-and-unsupported-saml-modalities

您可以将 Okta 仪表板磁贴指向应用程序的 SP 启动的登录端点。

现在也可以使用 AAD,您可以使用 SAML 将其联合到 Okta。 https://help.okta.com/en/prod/Content/Topics/Apps/Office365-Deployment/configure-sso.htm

这种方法将允许使用 Okta 身份登录您的业务线应用。但是不会有任何注册经验。它更适合员工访问您的应用程序。注册类型的经验需要 AAD B2C。