API REST для регистрации приложения Azure AD
Azure AD Graph API является более старым и для большинства операций рекомендуется использовать более новый Microsoft Graph API. Подробнее об этом читайте здесь Microsoft Graph или Azure AD Graph .
Сценарий регистрации приложения, хотя все еще находится в стадии бета-версии для более нового Microsoft Graph API, поэтому он не будет рекомендоваться для производственных приложений. Итак, я показал снимки экрана и подробные шаги с помощью API-интерфейса Azure AD Graph. Позже, когда стабильная версия Microsoft Graph API поддерживает регистрацию приложений, вы можете перейти на использование Microsoft Graph API.
Шаги высокого уровня
Ваше приложение логики должно сначала иметь достаточно разрешений, чтобы иметь возможность зарегистрировать приложение в Azure AD.
- Включить управляемую идентификацию для приложения логики
- Назначьте требуемое назначение роли приложения для управляемого идентификатора вашего логического приложения, чтобы иметь возможность вызывать Graph API. (Вам нужно будет найти идентификатор участника службы Graph API, чтобы сначала выполнить этот шаг)
Добавьте HTTP-действие в ваше логическое приложение, которое будет выполнять вызов API графа
- Позвонить на график API
- Установите соответствующие заголовки и тело в соответствии с требованиями регистрации вашего приложения
- Выберите управляемую идентификацию для аутентификации
- Установите для аудитории значение
https://graph.windows.net
или https://graph.microsoft.com
в соответствии с API, который вы вызываете.
Подробные шаги
Перейдите в приложение логики в Azure Portal> Identity>, теперь включите System Assigned Identity

Как только Managed Identity включен, вы должны получить идентификатор объекта. Я назову это LogicApp.Identity.ObjectId

Теперь перейдите на портал Azure> Azure AD> Приложения предприятия> Выберите Приложения Microsoft в раскрывающемся списке для Тип приложения> Отфильтруйте его, используя идентификатор приложения для API-интерфейса Azure AD Graph (00000002-0000-0000-c000-000000000000
). В случае, если вы пытаетесь вызвать Microsoft Graph API (поиск 00000003-0000-0000-c000-000000000000
)
Теперь обратите внимание на objectId
для субъекта службы. Давайте назовем это Graph.ObjectId
Запустите команду PowerShell, чтобы создать новое назначение роли приложения.
New-AzureADServiceAppRoleAssignment -ObjectId LogicApp.Identity.ObjectId -PrincipalId LogicApp.Identity.ObjectId -Id "824c81eb-e3f8-4ee6-8f6d-de7f50d565b7" -ResourceId "Graph.ObjectId"
Если вы столкнулись с ошибкой Authorization_RequestDenied
на этом шаге, пожалуйста, посмотрите мою заметку об известной проблеме в конце. Вы должны продолжить, поскольку разрешение все равно будет добавлено.
Обратите внимание, что я использовал 824c81eb-e3f8-4ee6-8f6d-de7f50d565b7
в качестве назначаемой роли приложения, что соответствует Application.ReadWrite.OwnedBy
разрешению приложения для Windows Azure Active Directory
, т. Е. Manage apps that this app creates or owns

Вы можете выбрать другое разрешение / роль приложения, если хотите изменить эту часть. Если вместо этого вы используете Microsoft Graph API, вы можете найти разрешения здесь - Справочник по разрешениям для Microsoft Graph - например, Application.ReadWrite.All
или Application.ReadWrite.OwnedBy
Теперь перейдите в приложение логики и добавьте действие HTTP.
Обратите внимание на URI, метод, заголовки и тело (я использовал очень простой JSON, но вы можете изменить его в соответствии с вашими требованиями)
Также обратите внимание, что для параметра Аутентификация установлено значение Managed Identity
, а для аудитории - https://graph.windows.net
(которое может стать https://graph.microsoft.com
, если вместо этого вы вызываете Microsoft Graph API)

Теперь попробуйте запустить приложение логики, и действие HTTP должно завершиться успешно, зарегистрировав новое приложение Azure AD в соответствии с вашим JSON.

В случае возникновения ошибки неверного запроса - проблема, вероятно, связана с входными данными вызова API Graph, такими как URI, заголовок или тело.
В случае возникновения ошибки «Запрещено» или «Несанкционировано» - проблема связана с выполнением следующих шагов для назначения разрешения приложения идентификатору приложения логики, поэтому проверьте эти шаги еще раз.
При запуске сценария PowerShell, описанного в шаге 4 выше, вы можете столкнуться с известной проблемой, когда он выдает код ошибки Authorization_RequestDenied
.
Более подробную информацию об этой проблеме я дал здесь в Назначение разрешений Microsoft Graph для идентификатора управляемой службы Azure , и это также доступно в этой проблеме GitHub - Выполнение шага New-AzureAdServiceAppRoleAssignment возвращаетЗапрещенная ошибка .
Таким образом, даже несмотря на то, что вы периодически получаете эту ошибку, фактическое назначение роли должно быть создано, и вам следует продолжить.