Фоновое задание для получения пользователей O365 получает неавторизованное исключение - PullRequest
0 голосов
/ 31 мая 2018

Мы пытаемся создать микросервисный модуль, задачей которого является выборка всех пользователей с помощью Microsoft Graph API (/ users /) один раз в день и что-то с ними делать.

Мы следовали приведенному здесь руководству: https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_service и предоставили приложению Azure приложение Read.User.All: enter image description here

Затем мы получили согласие администратора на это разрешение от блейда Azure.

Наш сервис использует библиотеку Microsoft.Identity.Client для получения токена:

var confidentialClientApplication = new ConfidentialClientApplication(
            this.applicationId,
            this.authority,
            this.redirectUri,
            this.credential,
            new TokenCache(),
            new TokenCache());

            var result = await confidentialClientApplication.AcquireTokenForClientAsync(new[] { "https://graph.microsoft.com/.default" });
            return result.AccessToken;

Затем мы создаем клиент Graph:

new GraphServiceClient(new DelegateAuthenticationProvider(
            async requestMessage =>
            {
                var graphToken = await this.graphAuthProvider.GetAccessTokenAsync();

                // Append the access token to the request
                requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", graphToken);
            }));

Ниже приведена полезная нагрузка токена.Я возвращаюсь (некоторая информация опущена)

{
 "aud": "https://graph.microsoft.com",
 "iss": "https://sts.windows.net/<tenant_id>/",
 "iat": 1527833423,
 "nbf": 1527833423,
 "exp": 1527837323,
 "aio": "Y2dgYKgxbYzssLvLWfve6WbgtsdWAA==",
 "app_displayname": "<app_name>",
 "appid": "<app_id>",
 "appidacr": "1",
 "e_exp": 262800,
 "idp": "https://sts.windows.net/<tenant_id>/",
 "oid": "<subject_id>",
 "sub": "<subject_id>",
 "tid": "<tenant_id>",
 "uti": "-XvIySkmuUOuqmQI0l8CAA",
 "ver": "1.0"
}

И затем, пытаясь получить пользователей, я получаю сообщение об ошибке, в котором говорится, что приложение не имеет разрешения на доступ к этому ресурсу.

1 Ответ

0 голосов
/ 01 июня 2018

Нашел что не так.Оказывается, я добавил делегированные разрешения вместо разрешений приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...