Я пытаюсь автоматизировать получение отчетов AD с помощью Graph REST API из приложения .net на С#.
Я создал субъект-службу (используя регистрацию приложений) на новом портале Azure. Для этого субъекта-службы настроена вся необходимая информация для OAuth 2.0:
- Идентификатор приложения или идентификатор клиента (создается автоматически)
- Ключ или секрет клиента
- Идентификатор арендатора (из идентификатора каталога Azure Directory)
Субъект-служба также имеет соответствующие разрешения для "Microsoft Graph" как "Чтение данных каталога".
Я могу получить токен с помощью REST API из приложения .net, но когда я пытаюсь использовать этот токен в своем коде, я получаю сообщение об ошибке: "Невозможно проверить доступ на чтение каталога для appId em>сильный>".
Мой код для вызова REST API с использованием токена (я изменил идентификаторы GUID для идентификатора арендатора и т. д.):
var client2 = new RestClient("https://graph.windows.net/a0a00aa0-aaaa-0000-0000-00000e0000aa/reports?api-version=beta");
var request2 = new RestRequest(Method.GET);
request2.AddHeader("cache-control", "no-cache");
request2.AddHeader("authorization", "Bearer " + token);
request2.AddHeader("content-type", "application/json");
IRestResponse response2 = client2.Execute(request2);
Console.WriteLine(response2.Content);
Ошибка, которую я получаю:
{
"error":{
"code":"Unable to check Directory Read access for appId: 00000aa-aaaa-0a0a-0000-000000000000","message":"message:Unable to check Directory Read access for appId: 00000aa-aaaa-0a0a-0000-000000000000\n client-request-id:00aa0a0a-48bf-4bf8-ae40-a2976a3c6910 timestamp:2017-04-28 01:38:52Z"
}
}
Я проверил, что учетные данные нигде не кэшируются, как указано в некоторых блогах. Я даже запустил код с пустой виртуальной машины и получил ту же ошибку. Любые указатели для устранения этой ошибки или что может быть причиной этого.
ОБНОВЛЕНИЕ - 28.04.2017
Я решил это. Я знаю точные шаги, которые решают это для меня. Но я не знаю основной концепции. Если кто-нибудь может объяснить мне это и как это сделать через PowerShell или графический интерфейс (даже в 2 строки), я приму это как ответ. Шаги, которые я предпринимаю, следующие:
- Создайте субъект-службу/приложение в регистрации приложений.
- Добавьте разрешение для Windows Azure AD для «Вход и чтение профиля пользователя» и «Чтение данных каталога». Я также добавил разрешения для Microsoft Graph для «Чтение данных каталога», так как мне также нужно сделать несколько вызовов для этого.
- Добавьте URL-адрес ответа для Postman, например "https://www.getpostman.com/oauth2/callback. ".
- Используйте помощник Postman OAuth 2.0, чтобы получить токен. Во время процесса он предоставляет экран ниже. После того, как я нажму «Принять», он сгенерирует токен.
- Теперь я могу делать запросы, используя код С#.
Что я пробовал: я пытался использовать «Предоставить разрешения» в колонке «Требуемые разрешения» в регистрации приложений, но это не сработало и привело к той же ошибке.
ВОПРОС. Я хочу понять, что именно делает приведенное ниже диалоговое окно и как это сделать с помощью графического интерфейса или PowerShell.