2017-08-04 97 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中需要的功能 - 多租戶應用程序... –