2016-12-06 60 views
1

我嘗試使用圖形API獲取有關Azure Active Directory組的信息,但我不斷收到「Authorization_RequestDenied」響應。Authorization_Request當嘗試使用圖形API從Azure Active Directory獲取組

此問題與Insufficient privileges error when trying to fetch signed in user's group membership using Azure AD Graph API類似,但該問題的答案對我無效。

這裏是我做了什麼:

  • 使用我的Microsoft帳戶登錄到Azure的門戶(例如[email protected]
  • 設置用於測試的Azure中的Active Directory實例。實例的域是一樣的東西examplehotmail247.onmicrosoft.com
  • 創建日期([email protected]
  • 創建一些組的用戶,並提出的那些基團
  • 創建使用OpenID連接配置爲驗證ASP.NET應用程序以AAD的用戶部分。
  • 在AAD中註冊應用程序,創建客戶端密鑰,回覆URL等。
  • 在AAD中修改了應用程序的清單,以便返回組成員聲明。

驗證部分正常工作。用戶登錄後,我可以看到我期望的所有信息(名稱,ID等)以及包含用戶所屬的所有組的ID的聲明。

到目前爲止,這麼好。

現在,我想將這些組ID轉換爲可讀的組名稱。爲此,我使用的是Microsoft.Azure.ActiveDirectory.GraphClient NuGet包,它提供了一個GetObjectsByObjectIdsAsync方法。此方法似乎是REST方法的包裝。

,試圖得到這個工作,我已經做了以下內容:

  • 在Azure的門戶,我已經授予的「登錄和讀取用戶配置文件」和「讀目錄數據」的權限我的應用程序。
  • 使用我的Microsoft帳戶

我看到什麼在我的ASP.NET應用程序至少一次登錄:當我使用我的Microsoft帳戶登錄到我的ASP.NET應用程序,一切正常。然而,當我登錄使用我創建了AAD帳戶([email protected])時,出現以下錯誤:

[DataServiceClientException: {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"1234e0bb-3144-4494-a5fb-12a937147bcf","date":"2016-12-06T18:39:13"}}] System.Data.Services.Client.BaseAsyncResult.EndExecute(Object source, String method, IAsyncResult asyncResult) +919 System.Data.Services.Client.QueryResult.EndExecuteQuery(Object source, String method, IAsyncResult asyncResult) +116

直接使用REST API嘗試等效查詢(即以ASP.NET出來的圖片)給出了相同的結果。

那麼我在這裏錯過了什麼?

更新:我還向應用程序授予了下列委派的權限(適用於Windows Azure Active Directory):登錄並讀取用戶配置文件,讀取目錄數據,以登錄用戶身份訪問目錄。但是,它沒有任何區別。

更新#2:我甚至讓[email protected] AAD實例的全局管理員,它仍然沒有幫助。

更新#3:好了,第一,一些澄清。用戶登錄後,我的ASP.NET應用程序從OpenID Connect流獲取授權碼。一旦我得到的代碼,我使用AcquireTokenByAuthorizationCodeAsync交換它的訪問令牌。訪問令牌綁定到用戶,所以我想依賴委託權限,而不是應用程序權限。

+0

你試過授予您的應用程序的應用程序級別的權限?儘管讀目錄數據權限應該可以工作,但它是一個委託權限,它也取決於登錄用戶的權限。如果用戶不是可能導致應用程序無法訪問數據的管理員。如果您希望應用無論用戶擁有訪問權限,都必須授予應用權限。 – juunas

+0

@juunas嘗試使用應用程序權限,但它沒有改變任何東西 - 相同的錯誤 – RobSiklos

+0

'TestMember @ examplehotmail247 @ onmicrosoft.com'你的意思是使用退出** Microsoft帳戶**添加帳戶? –

回答

0

的問題是,雖然適當的委派權限都在Azure的門戶網站授予我的ASP.NET應用程序,用戶永遠不會有機會同意給他們。

我開始通過在Azure中爲ASP.NET應用程序創建一個全新的應用程序註冊,以下是我發現的:當用戶第一次登錄時,他們被要求同意所需的任何委派權限。但是,如果我在第一次登錄後更改了需要委派的權限,則下次登錄時不會要求用戶同意(對於新需要的權限)。

這絕對不是我所期待的,所以我要打開這個新問題。

+0

這裏的新問題:http://stackoverflow.com/q/41023618/270348 – RobSiklos

相關問題