Область действия, необходимая для получения токена доступа для извлечения групп пользователей из Azure с использованием идентификатора клиента, а также секретного и графического API клиента - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь получить группы в своем лазурном арендаторе, используя мой секретный ключ клиента и идентификатор клиента.Проблема в том, что я не знаю, какую область передать при получении токена доступа для использования графа API.Я использовал https://graph.microsoft.com/.default для получения токена доступа, но это не включает разрешение на извлечение групп.Какую область применения использовать

1 Ответ

1 голос
/ 14 марта 2019

https://docs.microsoft.com/en-us/graph/api/group-list?view=graph-rest-1.0#permissions

Права доступа

Для вызова этого API требуется одно из следующих разрешений. Подробнее о том, как выбирать разрешения, см. В разделе «Разрешения».


Тип разрешений Разрешения (от наименее до наиболее привилегированных)

Делегированный (рабочий или учебный аккаунт) Group.Read.All, Group.ReadWrite.All

Приложение Group.Read.All, Group.ReadWrite.All

Вам необходимо настроить доступ к API внутри AAD, а не с областью действия. Убедитесь, что вы не забыли нажать «предоставить разрешения» .

Пример предполагает, что вам требуется разрешение приложения. Делегированное разрешение работает аналогично.

enter image description here enter image description here

Пример кода для получения данных с использованием MSAL для аутентификации:

        IConfidentialClientApplication app = new ConfidentialClientApplication(
            "clientId",
            "https://login.microsoftonline.com/yourtenant.onmicrosoft.com",
            "http://localhost (redirecturi)",
            new ClientCredential("secret"),
            new TokenCache(), new TokenCache());

        string[] scopes = new string[] { "https://graph.microsoft.com/.default" };

        try
        {
            AuthenticationResult result = await app.AcquireTokenForClientAsync(scopes);
            System.Console.WriteLine(result.AccessToken);

            using (var http = new HttpClient())
            {
                http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", result.AccessToken);
                var groupResponse = await http.GetAsync("https://graph.microsoft.com/v1.0/groups");
                var groupJson = await groupResponse.Content.ReadAsStringAsync();
                System.Console.WriteLine(groupJson);
            }
        }
        catch (Exception ex)
        {
            System.Console.WriteLine(ex.Message);
        }
...