Где я могу найти URI идентификатора приложения для приложения Microsoft? - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь войти как зарегистрированное приложение с разрешениями, предоставленными для: Портал Azure> Регистрация приложений> Регистрация приложений (предварительная версия)> Имя моего приложения - разрешения API

Согласно этой документации , я должен передать свой идентификатор ресурса (APP ID URI) в параметре области при запросе токена. Я уверен, что этот параметр области вызывает у меня проблемы.

Я пробовал разные параметры прицела.

  1. https://graph.microsoft.com/.default: Это работает для основных функций, таких как чтение календаря, но я считаю, что разрешения по умолчанию очень мало для моих нужд. Поскольку это работает, я считаю, что остальные мои параметры верны, и проблема заключается в объеме.

  2. [APP-ID]/.default: Это дает мне успешный ответ, однако всякий раз, когда я пытаюсь сделать какой-либо запрос, включая основной запрос календаря чтения, я получаю InvalidAuthenticationToken. Я могу заверить вас, что я передаю правильный токен, полученный из запроса токена.

  3. Несколько различных комбинаций URL-адресов на основе онлайн-предложений. Все они возвращаются

    "Участник ресурса {ресурс-URL} не найден в клиенте {id}.

Я твердо верю, что проблема в том, что я не передаю правильный APP ID URI для своего приложения. Может кто-нибудь сказать мне, где я могу найти этот ресурс? Все, что я искал в Интернете, старше 2 лет и, похоже, не похоже на новый портал Azure.

1 Ответ

1 голос
/ 05 апреля 2019

Для учетных данных клиента (т. Е. Для получения токена без пользователя) вам нужно передать https://graph.microsoft.com/.default в качестве scope.

Разрешения, предоставляемые https://graph.microsoft.com/.default, представляют собой «Права приложения», которые вы указали при регистрации приложения на портале:

enter image description here

Один разВы добавили все «Права доступа к приложениям», необходимые для вашего приложения, вам необходимо «Предоставить согласие» для этих областей в вашем клиенте (это кнопка внизу вкладки разрешений API.

Однаждыони у вас есть, вам нужно выдать POST для конечной точки /token (разрывы строк просто для удобства чтения, это должна быть одна строка):

POST https://login.microsoftonline.com/{{tenantDomain}}/oauth2/token
Content-Type: application/x-www-form-urlencoded

client_id={your-app-id}
&scope=https://graph.microsoft.com/.default
&client_secret={your-client-secret}
&grant_type=client_credentials

Это вернет вам что-тонапример:

{
    "token_type": "Bearer",
    "expires_in": "3600",
    "ext_expires_in": "3600",
    "expires_on": "1554431330",
    "not_before": "1554427430",
    "resource": "00000003-0000-0000-c000-000000000000",
    "access_token": "eyJ0eXAiOiJKV1QiLCJub25jZS..."
}

Когда вы вызываете в Graph, вам нужно установить заголовок Authorization на token_type access_token. Поэтому вызов /users будет выглядеть так:

GET https://graph.microsoft.com/v1.0/users
Authorization:"Bearer eyJ0eXAiOiJKV1QiLCJub25jZS..."
Host:"graph.microsoft.com"
Accept:"application/json"
...