0

我試圖通過應用程序訪問流程搜索我自己和第三方Azure Active Directoriy中的用戶 我使用以下內容獲得有效的令牌。Authorization_RequestDenied:沒有足夠的權限來完成操作。」錯誤與應用程序,只在第三方AD

string authority = string.Format(CultureInfo.InvariantCulture, "https://login.microsoftonline.com/{0}", "<AD>.onmicrosoft.com"); 
AuthenticationContext authContext = new AuthenticationContext(authority); 
ClientCredential clientCredential = new ClientCredential(<clientId>, <appKey>); 

AuthenticationResult result = await authContext.AcquireTokenAsync("https://graph.windows.net" , clientCredential); 
string TokenForApplication = result.AccessToken; 

我用這個方法來搜索用戶給定的名稱。

public async Task<List<IUser>> UsersSearch(IActiveDirectoryClient client, string searchString) 
{ 
    List<IUser> usersList = null; 
    IPagedCollection<IUser> searchResults = null; 

    IUserCollection userCollection = client.Users; 
    searchResults = await userCollection.Where(user => 
     user.UserPrincipalName.StartsWith(searchString) || 
     user.GivenName.StartsWith(searchString)).Take(10).ExecuteAsync(); 
    usersList = searchResults.CurrentPage.ToList(); 

    return usersList; 
} 

這一切工作正常在Azure的AD我第一次安裝的應用程序。

但是,當我嘗試使用該應用程序在另一個Azure的活動目錄我的錯誤:Authorization_RequestDenied: Insufficient privileges to complete the operation."

我在原來的Azure的AD我已經設置我需要的應用程序訪問圖形API和搜索的所有權限用戶:

permissions on my own AAD

在第三方Azure的AD我已經通過管理流走了,並授予該應用程序所需的所有權限:

Permissions for app on Third party AAD

至於我可以看到我得到一個有效的令牌給每個Azure的廣告,但我不斷收到同樣的錯誤時,我嘗試訪問第三方Azure的AD。

我改變什麼AD,我試圖訪問的方法是在

string authority = string.Format(CultureInfo.InvariantCulture, "https://login.microsoftonline.com/{0}", "<AD>.onmicrosoft.com"); 

改變<AD>我把一切相同。

回答

1

從您的屏幕截圖中,選定的權限適用於Microsoft Graph API(https://graph.microsoft.com),但根據您的代碼,您將獲取Azure AD圖形API(https://graph.windows.net)的令牌。

如果您想使用Azure AD圖形API,您應該在多租戶應用程序的Required permissions刀片中添加Windows Azure Active Directory的權限,並在其他AAD中執行管理員同意。

如果你想使用Microsoft Graph API,你應該修改你的代碼,使用https://graph.microsoft.com而不是https://graph.windows.net

+0

謝謝你,我沒有,我使用Azure的AD圖形API真正實現! 如果我改變了終點,我得到「錯誤請求」:「無效的版本」,這是我收集將意味着我需要改變我的代碼,使用了不同的電話? – Jeppe

+0

您要使用Azure的AD圖形API或微軟圖形API?您的sdk似乎使用azure廣告圖形api。 –

+0

是的,我從我目前使用Azure的AD圖形API你的答案的理解。我想使用Microsoft圖形API。 – Jeppe

相關問題