Azure AD B2C 与公司(Azure?)AD 帐户集成

Azure AD B2C integrating with corporate (Azure?) AD accounts

我们希望将 Azure AD B2C 用于我们的 Web 应用程序,以允许用户使用 'local' account/password 或使用他们的社交帐户(Facebook 等)登录。 https://docs.microsoft.com/azure/active-directory-b2c/active-directory-b2c-overview

但是,在这个应用程序中,我们可能会针对组织,因此我们也想与公司现有的 Azure AD 企业帐户集成。这样用户就不必创建新帐户并可以使用他们现有的公司帐户。

事实证明,Azure AD B2C 中有一个(新)功能,它允许您使用此处所述的自定义策略显式 link 到外部 Azure AD 帐户:https://docs.microsoft.com/azure/active-directory-b2c/active-directory-b2c-setup-aad-custom

不幸的是,这只有在我们事先知道我们需要 link 并添加特定配置的情况下才有效。它还会泄露有关谁在使用该应用程序的信息,因为公司名称会作为选项列在登录页面上。

我也查看了 Azure AD B2B 功能,但我认为这也不合适。

我们真正想要的是让 Azure AD B2C 提供到(公司)Microsoft 帐户的通用登录',它可以检测该电子邮件地址是否已在任何 Azure AD 系统中处理;如果是,它会将身份验证委托给该系统,但如果不是,它将回退到 Azure AD B2C 本地帐户。

此通用登录名已适用于访问标准 Microsoft 应用程序,例如它们的门户。有谁知道这在 Azure AD B2C 中是否可行,或者有任何潜在的时间表可以实现吗? 是否有任何替代系统可以提供类似的功能?

您指的是在 multi-tenant mode 中将 Azure AD 添加为 Azure AD B2C 的身份提供者。

发件人:

为了支持多租户 Azure AD,您需要在自定义策略中使用不同的值配置您的 ClaimsProvider。

使用以下值,确保替换为 client_id 和 IdTokenAudience。

<Item Key="DiscoverMetadataByTokenIssuer">true</Item>
<Item Key="ValidTokenIssuerPrefixes">https://sts.windows.net/</Item>
<Item Key="authorization_endpoint">https://login.microsoftonline.com/common/oauth2/authorize</Item>
<Item Key="client_id">df5b2515-a8d2-4d91-ab4f-eac6e1e416c2</Item>
<Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item>
<Item Key="scope">openid</Item>
<Item Key="UsePolicyInRedirectUri">false</Item>
<Item Key="HttpBinding">POST</Item>
<Item Key="response_types">id_token</Item>
<Item Key="IdTokenAudience">df5b2515-a8d2-4d91-ab4f-eac6e1e416c2</Item>

注意:此功能甚至还没有正式预览,因此请谨慎使用。继续关注官方 "Sign in by using Azure AD accounts" 文档,看看何时有完整的文档和支持。

编辑: 确保在应用程序设置中打开 Multi-tenanted 开关,否则会出现以下错误:

AADSTS70001: Application with identifier '(guid)' was not found in the directory (our company's primary domain)

Azure AD B2C 不正式支持多租户 Azure AD 标识提供者。您应该为该功能投票 here,这样它可以帮助确定它的优先级,并在该功能处于预览状态时与您联系。

如果你使用的 Azure AD 租户数量有限,则有一个潜在的解决方法。您可以在您的应用程序中构建一个页面,用户可以在其中输入电子邮件地址。根据电子邮件地址,您可以在调用 Azure AD B2C 时使用 domain_hint 参数将其直接重定向到正确的登录页面。