2016-01-13 17 views
15

我正在嘗試使OAuth2工作流程正確執行Azure AD。我下面從這個來源的方向: https://login.microsoftonline.com/[app-endpoint-id]/oauth2/authorize?response_type=code&client_id=[client-id]&redirect_uri=[redirect-uri]OAuth2與Azure AD - 未獲得用戶同意

我然後使用授權碼來請求訪問令牌以HTTP POST像這樣:https://msdn.microsoft.com/en-us/library/azure/dn645542.aspx

我可以成功地利用這個請求得到一個授權碼響應(我測試此使用郵差):

POST/[應用端點-ID] /的oauth2 /令牌HTTP/1.1 主機:login.microsoftonline.com 緩存控制:無緩存 郵差令牌: ed098281-9aa4-6e5f-915d-0253d9a876d3 內容類型:應用程序上/ X WWW的窗體-urlencoded

grant_type = authorization_code & CLIENT_ID = [客戶端ID] &代碼= [authorization_code] & REDIRECT_URI = [REDIRECT_URI] & client_secret = [客戶端祕密] &資源= [APP- url]

我從POST請求中收到以下錯誤消息: {「error」:「invalid_grant」,「error_description」:「AADSTS65001:用戶或管理員未同意使用ID爲' ID'。爲此用戶和資源發送交互式授權請求。\ r \ n跟蹤ID:trace-di \ r \ n相關ID:correlation-id \ r \ n時間戳:2016-01-13 17:18:39Z「,」error_codes「: [65001],「timestamp」:「2016-01-13 17:18:39Z」,「trace_id」:「trace-id」,「correlation_id」:「correlation-id」}

如果我清除了緩存並使第一個請求授權代碼我將被重定向到登錄。但是,我沒有得到任何方式來登錄後,像我說的應該在本文檔中授權我的應用程序:

// azure。 microsoft.com/en-us/documentation/articles/active-directory-integrating-applications/

我在做什麼錯在這裏?我試圖得到訪問令牌。

+0

你想要做什麼?即你是否試圖用AAD或移動應用程序獲得WebAPI應用程序,使用哪種語言? – theadriangreen

+0

我正在嘗試使用Java中的AAD來獲得WebAPI應用程序。 – Spensaur

+0

我面臨同樣的問題,但我使用PHP。 –

回答

9

您正在運行的問題是您用於訪問您的應用程序的租戶未將您的應用程序添加到受支持的應用程序列表中。它告訴你以管理員身份使用交互式流程。

同意是一個兩個步驟的過程:

1)首先,租戶的管理員必須批准應用程序。這可以通過1)在希望使用該應用程序的租戶的Azure門戶中完成,或者2)通過啓動應用程序並在登錄時對應用程序使用管理員憑據。

Azure門戶審批示例:

2)其次,任何附加的用戶(非管理員)將得到促進使用首次應用程序時,管理員已同意該應用可用於後同意他們的個人信息。

+0

謝謝!出於某種原因,我的印象是我是一名管理員,因爲我創建了這些應用程序,但是你的帖子讓我意識到我沒有。實際上,在我發佈我的問題之前,我已經在租戶應用的Azure門戶中授予了委託權限,這也使我相信我擁有管理權限。 – Spensaur

+3

更新 - 我可以使用管理員帳戶登錄,並且我被提示要求同意。之後我得到了一個訪問令牌。使用同一個管理員帳戶,我檢查了Azure門戶上的權限,並確保該租戶已獲得許可,並且確實如此。但是在嘗試使用非管理員用戶獲取訪問令牌時,我仍遇到同樣的錯誤。我將用戶分配設置爲no。但我確實指派了我的用戶帳戶。我需要做什麼特別的事情才能在登錄後獲得非管理員用戶的權限提示嗎? – Spensaur

+0

當我嘗試一個不屬於我自己的非管理員用戶帳戶時。我收到以下消息:對不起,但我們在簽入您時遇到問題。我們收到了錯誤的要求。其他技術信息:AADSTS90093:此操作只能由管理員執行。以管理員身份登錄並登錄,或聯繫您的組織管理員之一。 – Spensaur

2

嘗試在發佈請求中提供資源爲'https://graph.windows.net'。

它爲我工作。

+1

這起作用。請注意,受保護的API將需要根據https://stackoverflow.com/questions/44466189/oauth2-resource-owner-password-grant-via-api/44539932#44539932配置的包含graph.windows.net的已允許的受衆羣體 – Sentinel