我们希望将Azure AD B2C用于我们的Web应用程序,以允许用户使用"本地"帐户/密码登录或使用其社交帐户(Facebook等(。 https://learn.microsoft.com/azure/active-directory-b2c/active-directory-b2c-overview
但是,在此应用程序中,我们可能面向组织,因此我们还希望与公司现有的 Azure AD 公司帐户集成。这样,用户就不必创建新帐户,可以使用其现有的公司帐户。
事实证明,Azure AD B2C 中有一个(新(功能,允许你使用自定义策略显式链接到外部 Azure AD 帐户,如下所述:https://learn.microsoft.com/azure/active-directory-b2c/active-directory-b2c-setup-aad-custom
不幸的是,这只有在我们事先知道需要与哪些外部公司链接并添加特定配置的情况下才有效。它还会泄露有关谁正在使用该应用程序的信息,因为公司名称在登录页面上列为选项。
我还查看了Azure AD B2B功能,但我认为这也不适合。
我们真正想要的是 Azure AD B2C提供对(公司(Microsoft帐户的通用登录,该帐户检测该电子邮件地址是否已在任何 Azure AD 系统中处理;如果是,则它将身份验证委托给该系统,但如果没有,它将回退到 Azure AD B2C 本地帐户。
此通用登录已可用于访问标准Microsoft应用程序,例如其门户。有谁知道这在 Azure AD B2C 中是否可行,或者是否有任何可能实现的时间尺度? 是否有任何替代系统能够提供类似的功能?
你指的是将 Azure AD 置于多租户模式,作为标识提供者添加到 Azure AD B2C。
发件人:具有自定义策略的 Azure AD B2C 中的多租户 Azure AD 身份验证
若要支持多租户 Azure AD,需要在自定义策略中使用不同的值配置声明提供程序。
使用以下值,确保替换为 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>
注意:此功能甚至尚未正式推出预览版,因此请谨慎使用。请继续监视官方的"使用 Azure AD 帐户登录"文档,以查看何时完全记录和支持此文档。
编辑:确保在应用程序的设置中翻转Multi-tenanted
开关,否则会出现以下错误:
AADSTS70001:在目录(我们公司的主域(中找不到标识符为"(guid("的应用程序
AzureAD B2C 不正式支持多租户 Azure AD 标识提供者。你应该在此处为该功能投票,以便它可以帮助确定其优先级,以便在该功能处于预览状态时可以联系你。
如果你使用的 Azure AD 租户集有限,则存在一种可能的解决方法。您可以在应用中构建一个页面,供用户在其中键入电子邮件地址。根据电子邮件地址,可以在调用 Azure AD B2C 时使用 domain_hint 参数将其直接重定向到正确的登录页。