我嘗試使用圖形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
交換它的訪問令牌。訪問令牌綁定到用戶,所以我想依賴委託權限,而不是應用程序權限。
你試過授予您的應用程序的應用程序級別的權限?儘管讀目錄數據權限應該可以工作,但它是一個委託權限,它也取決於登錄用戶的權限。如果用戶不是可能導致應用程序無法訪問數據的管理員。如果您希望應用無論用戶擁有訪問權限,都必須授予應用權限。 – juunas
@juunas嘗試使用應用程序權限,但它沒有改變任何東西 - 相同的錯誤 – RobSiklos
'TestMember @ examplehotmail247 @ onmicrosoft.com'你的意思是使用退出** Microsoft帳戶**添加帳戶? –