Где я могу найти URI идентификатора приложения для приложения Microsoft?

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

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

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

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

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

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

    "The resource principal {resource-url} was not found in tenant {id}.

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

2 способа найти URI идентификатора приложения. 1) Отредактируйте манифест и найдите identifierUris 2) Перейдите в Azure AD > Регистрация приложений > Регистрация вашего приложения > Свойства. i.stack.imgur.com/V04A0.png

Rohit Saigal 04.04.2019 20:01

Вам нужно передать идентификатор API, который вы хотите вызвать. Не ваш URI. Если вы используете «.default», вы должны определить разрешения приложения в разрешениях API и предоставить их. Обратите внимание, что вам нужны разрешения приложения, а не делегированные разрешения.

juunas 04.04.2019 20:02

Я искал идентификатор Uris в манифесте, я получил: "identifierUris": []. Это наводит меня на мысль, что у меня нет URI идентификатора приложения, что странно.

Minhal Shanjer 04.04.2019 20:08

Здравствуйте, juunas, я предоставил и утвердил разрешения приложения в соответствии со страницей API-Permission. Когда вы говорите «передать идентификатор», вы имеете в виду идентификатор приложения? Я попытался сделать [APP-ID]/.default, но это не сработало. Я попробую [APP-ID] как отдельное приложение.

Minhal Shanjer 04.04.2019 20:10

Это связано с тем, что вы, возможно, еще не установили идентификатор URI идентификатора приложения для своего приложения. Тем не менее.. Я думаю, что @juunas уже хорошо объяснил это.. вам нужен идентификатор для API, который вы собираетесь вызывать.. получить токен для .. так что это будет идентификатор графа API, который, я полагаю, будет https://graph.microsoft.com

Rohit Saigal 04.04.2019 20:12

Кажется, я понимаю, что вы имеете в виду, я попробую и отвечу.

Minhal Shanjer 04.04.2019 20:14

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

Minhal Shanjer 05.04.2019 15:19
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
6
7
13 348
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

После того, как вы добавили все «разрешения приложения», необходимые для вашего приложения, вам нужно «предоставить согласие» для этих областей в вашем клиенте (это кнопка внизу вкладки разрешений 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"

@MinhalShanjer, MarcLaFleur, у меня похожая проблема. Я делаю запрос на получение токена доступа с помощью проводника Microsoft Graph. Я выполнил все шаги, указанные в вашем ответе, но не получил никакого ответа. В идеале я должен получить json, содержащий токен.

Ayush 11.11.2019 10:13

Вы можете проверить мой полный вопрос здесь: stackoverflow.com/questions/58798338/…

Ayush 11.11.2019 10:15

Другие вопросы по теме

Ограничение представления членства в группах ролей администраторов Azure AD только администраторами
Вызов API для изменения сведений о группе в Azure AD
Является ли бесплатный токен для встраивания конкретным приложением или пользователем?
Как получить правильный токен носителя через библиотеку Microsoft-adal-angular6?
Как добавить внешнего поставщика удостоверений SAML в активный каталог Azure?
Мне нужно установить «информацию о задании» для пользователей в моем Azure AD, например. "отделение". Set-AzADUser не имеет для этого параметра. Есть другая команда?
Как массово создавать/импортировать пользователей в Azure AD, чтобы все они могли иметь единый вход в мою песочницу SF?
Проблема с регистрацией приложения Azure с помощью AZ CLI
Интегрируйте Многофакторную идентификацию Azure на веб-сайт для аутентификации пользователей
Azure powershell: найдите создателя пользователя, принципала, приложения и группы в Azure AD