#azure #azure-active-directory #microsoft-graph-api #azure-service-principal
#azure #azure-active-directory #microsoft-graph-api #azure-service-principal
Вопрос:
Я пытаюсь предоставить согласие администратора на назначенные разрешения с помощью API-интерфейсов Microsoft graph. Шаги, которые я выполнил, следующие:
-
Создайте приложение с определенным массивом «appRoles».
-
создайте участника службы с помощью AppID.
-
Предоставьте разрешение на назначение для участника службы. Я запустил http post запрос:
https://graph.microsoft.com/v1.0/servicePrincipals /{id}/Одобрить присвоенный
- На портале Azure вместо предоставления изначально существующего разрешения я вижу, что он создает другое разрешение и дает на него согласие, как показано на рисунке ниже.
Почему он не предоставляет исходное разрешение, даже если «идентификатор доступа» такой же? Я хочу предоставить исходное разрешение, может кто-нибудь мне сказать? Спасибо.
Ответ №1:
Конечно, это не предоставит исходное разрешение, когда вы создаете приложение и предоставляете разрешение API, это разрешение и разрешение в Exchange
— это совершенно разные разрешения от разных API, независимо от того, что appRoleId
они использовали.
Чтобы предоставить full_access_as_app
разрешение приложению для вашего приложения, выполните следующие действия.
1. Перейдите к своему приложению AD на портале -> Manifest
-> requiredResourceAccess
, resourceAppId
выберите и id
, отметьте id
внизу как appRoleId
.
2. Перейдите Azure Active Directory
на портал -> Enterprise applications
-> найдите resourceAppId
полученный на шаге 1, затем вы найдете Office 365 Exchange Online
-> щелкните по нему -> Overview
-> получите Object ID
, запишите его как resourceId
.
Примечание: это Object ID
отличается в разных клиентах AAD.
3. Перейдите в свое приложение AD -> щелкните Managed application in local directory
, затем Object ID
выберите, запишите его как principalId
.
4. Затем вызовите Microsoft Graph, который вы использовали — предоставьте разрешение на назначение для участника службы, используйте значения, полученные ранее.
POST https://graph.microsoft.com/v1.0/servicePrincipals/<resourceId>/appRoleAssignedTo
{
"principalId": "<principalId>",
"resourceId": "<resourceId>",
"appRoleId": "<appRoleId>"
}
Я тестирую его в обозревателе графиков:
Проверьте результат на портале, он работает нормально.
Комментарии:
1. Привет, радость, при выполнении шага 2 я получаю сообщение об ошибке, как показано на рисунке: drive.google.com/file/d/1fV8IDMFN-iwo0nHTSsDSeNDZEkse-y0F /…
2. @PoojaDabhade Вам нужно указать фильтр
Application type
сMicrosoft Applications
помощью, а неEnterprise Applications
, см. Мой скриншот.3. Радость, это было полезно, и я могу предоставить исходное разрешение с вашим ответом. Спасибо. У меня есть еще один запрос, есть ли какой-либо graph API для получения «ObjectId» приложения Microsoft, имеющего «resourceId»?
4. @PoojaDabhade Я не знаю, чего вы на самом деле хотите, в данном случае это то,
ObjectId
resourceId
что указано на шаге 2, поэтому, если вы знаетеresourceId
, зачем вам нужно получить его снова?5. Мой вопрос заключался в том, как получить «resourceId» с помощью «resourceAppId» с помощью Microsoft graph API. Я нашел запрос: GET …/servicePrincipals?$filter=AppID eq ‘00000003-0000-0000-c000-000000000000’ для его извлечения.