2017-04-02 50 views
1

我成功地實施了Azure中的Active Directory用戶管理/認證/註冊的Web應用程序,下面這個例子: Azure Sample AAD with FlaskAzure Active Directory B2C是否使用Oauth或Open ID?

我決定嘗試一下,因爲它集成了各種社交應用的Azure的Active Directory的B2C。但是,由於Azure AD B2C似乎與OAuth 2.0不兼容,因此無法使用OAuth 2.0工作。我發現一些說明Azure AD B2C需要Open ID Connect的文檔。

您能否確認Azure Active Directory B2C是否需要Open ID Connect,或者它是否可以與OAuth 2.0一起使用?

由於

+0

應該意識到OpenID [1.0 | 2.0}和OpenID Connect –

回答

2

基於文檔here上,天青AD B2C支持ID連接和OAuth 2.0協議。 OpenID的 連接和OAuth 2.0:

Azure的活動目錄(AD天青)由B2C支持兩個行業標準協議提供身份爲您的應用程序服務 。該服務符合標準,但這些協議的任何兩個實現可能會有細微差別。

+0

之間的區別謝謝。該文檔還指出:「如果您正在構建託管在服務器上並通過瀏覽器訪問的Web應用程序,我們建議使用OpenID Connect。如果您想通過使用Azure AD B2C將身份管理添加到移動或桌面應用程序,應該使用OAuth 2.0而不是OpenID Connect。「 [鏈接](https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-oidc)。我試圖找出這是一個*必須*使用Open Id Connect或*推薦*真的意味着它是可選的。 – scurry

+0

爲了澄清我以前的評論,我正在構建一個Flask網絡應用程序,所以*推薦*方法是Open Id Connect。但是,本機應用程序(移動或桌面)的明顯*必需*方法是OAuth 2.0。所以,我需要澄清一下,對於網絡應用的*推薦*方法是否真的*是必需的*。我成功地使用了Azure AD中的Flask-OAuthlib,但是當我切換到Azure AD B2C時,Flask-OAuthlib與AAD B2C存在問題。我寧願使用Flask-OAuthlib,但不知道我是否必須使用flask-oidc來打開Id連接,這是錯誤的原因。 – scurry

+0

要回復其他人是否遇到類似問題,答案是Open Id Connect對於Web應用程序*不是必需的。 – scurry

4

Azure AD B2C支持官方reference protocols documentation中提到的OpenID Connect和OAuth 2.0。

爲了能夠使用OAuth 2.0和Flask登錄Azure AD B2C用戶,您需要修改樣本以遵循此示例中使用的OAuth 2.0方法:An Android application with Azure AD B2C using OAuth。關鍵的東西,你需要適應:

  • 你需要指定B2C授權和令牌端點:https://login.microsoftonline.com/tfp/TENANT_NAME/POLICY_NAME/oauth2/v2.0/authorizeExample from Android sample
  • 您需要將您的應用程序/客戶端ID添加爲作用域。 Example from Android sample
  • 您將無法調用Graph的/ me端點進行標記驗證並獲取用戶詳細信息。您需要驗證令牌並自行從中提取聲明(理想情況下,通過一個好的JWT開放源代碼庫,因爲這不是微不足道的,不幸的是,我不知道我現在可以推薦任何)。

編輯

我創建了一個python sample for Azure AD B2C和使用python-jose令牌驗證和要求檢索。一探究竟。

3

值得一不是Azure中的Active Directory B2C(AAD B2C)支持OpenID Connect並且它使用這兩個協議來交換信息,安全令牌OAuth 2.0。但是,AAD B2C "extends"這些協議通過引入策略來處理註冊,登錄和一般帳戶管理的用戶體驗。

這是什麼意思?首先,這意味着您無法創建自己的註冊/登錄體驗,但您只能將用戶重定向到正確的策略(which you to some extent can customize)。您無法爲此創建自己的註冊/登錄用戶界面,並且您僅限於爲此提供的基於Web的用戶界面的樣式/標記。

所以爲了使用AAD B2C驗證你可以按照this guide,它應該很容易適應Python。您只需將用戶重定向到AAD B2C的/authorize端點,然後validate the JWT you receive

相關問題