403 запрещено при извлечении всех пользователей из Azure AD с использованием Graph API - PullRequest
1 голос
/ 14 марта 2019

Я получаю 403 Запрещенный ответ от Azure AD при попытке получить всех пользователей с помощью Graph API:

    public static async Task<string> AppAuthenticationAsync()
    {
        var tenant = ConfigurationManager.AppSettings["ida:TenantId"];
        var resource = "https://graph.microsoft.com/";
        var clientID = ConfigurationManager.AppSettings["ida:ClientId"];
        var secret = ConfigurationManager.AppSettings["ida:AppKey"];

        var authority = $"https://login.microsoftonline.com/{tenant}";
        var authContext = new Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext(authority);
        var credentials = new ClientCredential(clientID, secret);
        var authResult = await authContext.AcquireTokenAsync(resource, credentials);

        return authResult.AccessToken;
    }

    public static async Task<string[]> GetUsersListAsync(HttpClient client)
    {
        var payload = await client.GetStringAsync($"https://graph.microsoft.com/v1.0/users");

        var obj = JsonConvert.DeserializeObject<JObject>(payload);
        var users = from g in obj["value"]
                               select g["displayName"].Value<string>();

        return users.ToArray();
    }

А ниже приведен код, который используется в моем контроллере для получения результата

   var token = await AppAuthenticationAsync();
   using (var client = new HttpClient())
   {
       client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
       var users = await GetUsersListAsync(client);
       lstADUsers = users.ToList();
   }

Клиент, зарегистрированный в Azure AD, имеет все разрешения:

enter image description here

Я что-то упустил?

1 Ответ

3 голосов
/ 14 марта 2019

Вы дали делегированные разрешения, но вызываете API с учетными данными клиента.

Дайте приложению права доступа к API, и вы сможете его вызывать. Делегированные разрешения применяются только при совершении вызовов от имени пользователя.

...