2017-08-04 69 views
7

我们想使用Azure的AD B2C为我们的Web应用程序,允许用户登录任何一个“本地”账号/密码或使用他们的社交网络帐户(脸谱,等等)。 https://docs.microsoft.com/azure/active-directory-b2c/active-directory-b2c-overviewAzure的AD B2C与企业(天青?)AD集成占

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

事实证明,有天青AD B2C内的(新)功能,它允许您通过使用自定义策略明确地链接到外部Azure的AD帐户如下所述:https://docs.microsoft.com/azure/active-directory-b2c/active-directory-b2c-setup-aad-custom

不幸的是,这仅适用如果我们事先知道我们需要链接哪些外部公司并添加特定配置。它还泄漏关于谁在使用应用程序的信息,因为公司名称在登录页面上被列为选项。

我也看了Azure的AD B2B功能,但我不认为这既符合正常。

我们很想为Azure的AD B2C提供一个通用的登录到(企业)Microsoft帐户”,检测是否该电子邮件地址的任何Azure的AD系统内已经处理;如果是,则会将身份验证委托给该系统,但如果不是,则会回退到Azure AD B2C本地帐户。

这个通用登录已经适用于访问标准的微软应用程序,如自己的门户网站。有没有人知道在Azure AD B2C中这是否可行,或者是否有可能的时间表? 是否有可能能够提供类似功能的备用系统?

回答

3

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

来源:Multi-Tenant Azure AD Auth in Azure AD B2C with Custom Policies

为了支持多租户Azure的广告,您需要配置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)

+0

不幸的是,这似乎并不奏效。我收到“抱歉,但我们在签入您时遇到问题,我们收到了一个错误的要求。”我使用了与特定租户相同的client_id和idTokenAudience。还有什么我应该配置? –

+0

进一步挖掘,这指定了一个错误:“AADSTS70001:在目录(我们公司的主域)中没有找到具有标识符'(guid)'的应用程序”。在测试期间,我们根本没有引用主域。我正在尝试使用Azure B2C的测试租户以及另一位登录用户的测试租户。这与我们的主域连接的方式/原因是什么?我们可以在这里强制断开吗?事实上,我们应该在这里使用什么client_id,因为显然我们不能将我们的应用程序作为客户端添加到每个目标租户的AD中。 –

+1

您的声音没有翻转您在此声明提供程序中使用的Azure AD应用程序中的“多租户”开关。 – Saca

1

Azure的AD B2C官方不支持多租户Azure的AD身份供应商。你应该投给功能here所以它可以帮助优化它,这样就可以在特征处于预览联系。

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

+0

那么,如果你想让你的web应用程序适用于内部公司用户(普通AD),但是还需要认证公司以外的其他用户(其他Azure AD租户,Microsoft帐户和Facebook帐户等),那么解决方案是什么? –

+0

你是什么意思,它是一个外部用户也可以使用的内部应用程序?如果您希望构建您的员工和客户都可以登录的CUSTOMER应用程序,则应该使用Azure AD B2C租户并将Azure AD添加为IdP。但是,如果这是员工和公司合作伙伴用来协作工作的应用程序,那么您应该使用Azure AD并查看Azure AD B2B – Parakh

+0

好的,谢谢。但是,如果我想让客户可以使用他们的Azure AD登录,并且我拥有无限的客户/组织,则无法手动将他们中的每一个手动添加为提供者。 Azure AD中需要的功能 - 多租户应用程序... –