0

Ich versuche, über den Anwendungszugriffsfluss nach Benutzern in meinem eigenen und einem Drittanbieter Azure Active Directory zu suchen erhalten ein gültiges Token.Authorization_RequestDenied: Unzureichende Berechtigungen, um den Vorgang abzuschließen. "Fehler mit App, nur bei Drittanbieter 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; 

ich diese Methode für Benutzer mit einem bestimmten Namen suchen.

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; 
} 

Dies alles auf der Azure AD funktioniert gut, wo ich zum ersten Mal Setup die App.

Aber

wenn, wenn ich versuche, die App in einem anderen Azure Active Directory verwenden ich den Fehler: Authorization_RequestDenied: Insufficient privileges to complete the operation."

In meinem ursprünglichen Azure AD habe ich gesetzt alle Berechtigungen ich für den App benötigen Sie den Grafik-API und Suche zugreifen für Benutzer:

permissions on my own AAD

In der dritten Azure AD habe ich über die Admin-Flow gegangen und gewährt der App, alle benötigten Berechtigungen:

Permissions for app on Third party AAD

Soweit ich sehen kann, bekomme ich ein gültiges Token für jedes Azure AD, aber ich erhalte immer den gleichen Fehler, wenn ich versuche, auf den Azure AD von Drittanbietern zuzugreifen.

So wie ich das ändern, was AD ich Zugang versuche durch <AD> in

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

Wechsel halte ich alles andere gleich.

Antwort

1

Aus Ihrem Screenshot sind die ausgewählten Berechtigungen für Microsoft Graph API (https://graph.microsoft.com), aber nach Ihrem Code erwerben Sie Token für Azure AD Graph API (https://graph.windows.net).

Wenn Sie Azure AD Graph API verwenden möchten, sollten Sie Berechtigungen für Windows Azure Active Directory in Required permissions Blade Ihrer Multi-Tenant-App hinzufügen und Admin-Zustimmung in anderen AAD. Wenn Sie Microsoft Graph API verwenden möchten, sollten Sie Ihren Code ändern, verwenden Sie https://graph.microsoft.com statt https://graph.windows.net.

+0

Danke, ich wusste nicht, dass ich tatsächlich die Azure AD Graph API verwendet habe! Wenn ich den Endpunkt ändere, bekomme ich "BadRequest": "Ungültige Version", was ich erhalte, würde bedeuten, dass ich meinen Code ändern muss, um einen anderen Satz von Anrufen zu verwenden? – Jeppe

+0

Sie möchten Azure AD Graph API oder Microsoft Graph API verwenden? Ihr SDK scheint azurblaue Ad-Grafik-API zu verwenden. –

+0

Ja, ich habe aus Ihrer Antwort verstanden, dass ich derzeit Azure AD Graph API verwende. Ich möchte Microsoft Graph API verwenden. – Jeppe

Verwandte Themen