Участник службы Azure: предоставление разрешения на назначение для участника службы обновляет статус исходного разрешения

#azure #azure-active-directory #microsoft-graph-api #azure-service-principal

#azure #azure-active-directory #microsoft-graph-api #azure-service-principal

Вопрос:

Я пытаюсь предоставить согласие администратора на назначенные разрешения с помощью API-интерфейсов Microsoft graph. Шаги, которые я выполнил, следующие:

  1. Создайте приложение с определенным массивом «appRoles».

  2. создайте участника службы с помощью AppID.

  3. Предоставьте разрешение на назначение для участника службы. Я запустил http post запрос:

https://graph.microsoft.com/v1.0/servicePrincipals /{id}/Одобрить присвоенный

  1. На портале 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’ для его извлечения.