Субъект-служба Azure: предоставление объекта-службы appRoleAssignment действительно обновляет статус исходного разрешения.

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

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

  2. создать субъект-службу с appId.

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

https://graph.microsoft.com/v1.0/servicePrincipals/%7Bid%7D/appRoleAssignedTo

  1. На портале Azure вместо предоставления изначально присутствующего разрешения я вижу, что он создает другое разрешение и дает на него согласие, как показано на рисунке ниже.

введите описание изображения здесь

Почему не предоставляется исходное разрешение, хотя appRoleId такой же? Я хочу предоставить оригинальное разрешение, может кто-нибудь мне скажет? Спасибо.


person Pooja_2304    schedule 13.10.2020    source источник


Ответы (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 - ›щелкните по нему -› _14 _- ›получите Object ID, запишите его как resourceId.

Примечание. Object ID отличается в разных клиентах AAD.

введите описание изображения здесь

3. Перейдите в свое приложение AD - ›щелкните Managed application in local directory, затем получите Object ID, запишите его как principalId.

введите описание изображения здесь

введите описание изображения здесь

4. Затем вызовите используемый вами Microsoft Graph - Предоставьте объекту службы appRoleAssignment, используйте полученные ранее значения.

POST https://graph.microsoft.com/v1.0/servicePrincipals/<resourceId>/appRoleAssignedTo

{
  "principalId": "<principalId>",
  "resourceId": "<resourceId>",
  "appRoleId": "<appRoleId>"
}

Я тестирую его в Graph Explorer:

введите описание изображения здесь

Результат проверяйте на портале, все работает нормально.

введите описание изображения здесь

person Joy Wang    schedule 13.10.2020
comment
Привет, Джой, при выполнении шага 2 я получаю сообщение об ошибке, как показано: drive.google.com/file/d/1fV8IDMFN-iwo0nHTSsDSeNDZEkse-y0F/ - person Pooja_2304; 13.10.2020
comment
@PoojaDabhade Вам нужно указать фильтр Application type с Microsoft Applications, а не Enterprise Applications, см. Мой снимок экрана. - person Joy Wang; 14.10.2020
comment
Радость, это было полезно, и я могу предоставить исходное разрешение на ваш ответ. Спасибо. У меня есть еще один запрос, есть ли какой-либо графический API для получения ObjectId приложения Microsoft, имеющего resourceId? - person Pooja_2304; 14.10.2020
comment
@PoojaDabhade Я не знаю, что на самом деле вы хотите, в этом случае ObjectId - это resourceId, как указано в шаге 2, поэтому, если вы знаете resourceId, почему вам нужно получить его снова? - person Joy Wang; 14.10.2020
comment
Мой вопрос заключался в том, как получить resourceId, имеющий resourceAppId, с помощью Microsoft Graph API. Я нашел запрос: GET ... / servicePrincipals? $ Filter = appId eq '00000003-0000-0000-c000-000000000000', чтобы получить его. - person Pooja_2304; 14.10.2020