Для использования с Azure API Management я пытаюсь добавить Приложения в Azure Active Directory (AAD) программным способом, в моем случае с помощью Graph API.Добавление приложений программно в Azure AD с использованием Client Credentials Flow
Мой сценарий таков: для того чтобы защитить веб-API, с которым я хочу работать с API управления Azure, я хочу использовать возможности OAuth AAD для выполнения тяжелой работы по аутентификации и выдачи токенов JWT, а затем просто использовать validate-jwt, чтобы проверить, все ли в Azure API Management. Это имеет то преимущество, что я могу более или менее опускать аутентификацию в моей бэкэнд-службе.
Это прекрасно работает, пока я создал приложение в Azure AD для используемого веб-приложения, но это нужно сделать вручную с Azure Portal; Azure APIm не делает это автоматически.
Теперь я пытаюсь сделать это автоматически: я хотел делегировать подписку на API в APIm на другое веб-приложение, которое я пишу, и оттуда я хочу использовать API-интерфейс Graph для создания Приложение в Azure AD и предоставить разрешения для применения API.
Первое, что я пытался сделать, это иметь третье приложение (мое приложение-приложение), чтобы иметь полные разрешения приложений для приложения Windows Azure Active Directory в Azure AD; это позволяет моему приложению обращаться к AAD с использованием API-интерфейса Graph REST. Мне удается получить маркер доступа с использованием гранта client_credentials (от login.microsoft.com), но этот знак не позволяет мне делать POST
на https://graph.windows.net/(my AAD ID)/applications?api-version=1.5
:
{
"odata.error": {
"code": "Authorization_RequestDenied",
"message": {
"lang": "en",
"value": "Insufficient privileges to complete the operation."
}
}
}
Я нашел (https://msdn.microsoft.com/Library/Azure/Ad/Graph/howto/azure-ad-graph-api-permission-scopes), что даже если я грант Directory.ReadWrite.All
разрешения, приложение (приложение только) не сможет создать или обновить приложение:
Примечание: в частности исключает создание или обновление для лиц, не перечисленных выше. Это включает в себя: Application, Oauth2PermissionGrant, AppRoleAssignment, устройство, ServicePrincipal, TenantDetail, домены и т.д.
Следующая вещь, которую я попытался был владелец ресурса Пароль Грант (grant_type=password
), передавая свои полномочия дополнительно, так что Я могу олицетворять себя в Graph API. Теперь мой POST
до конечной точки applications
преуспевает.
Мой нижний вопрос: могу ли я предоставить достаточные разрешения для моего приложения, чтобы я мог добавлять приложения программным образом с использованием потока учетных данных клиента, а не потока, действующего от имени пользователя? И если да, то как это делается?
я нашел еще одно обсуждения, которое, скорее всего, сводится к точно такой же проблеме, у меня есть: https://social.technet.microsoft.com/Forums/en-US/82ab8a7d- e17b-4e4a-9615-2bdf43f1866a/graph-api-call-returns-lack-privileges-to-complete-the-operation? forum = WindowsAzureAD Кроме того, я также нашел страницу, на которой обсуждаются разрешения API Графа: https : //msdn.microsoft.com/Library/Azure/Ad/Graph/howto/azure-ad-graph-api-permission-scopes – donmartin
Предоставляют ли они решение вашей проблемы? – juvchan
Нет, к сожалению, нет. Олицетворение администратора - единственное «решение», которое я нашел до сих пор. – donmartin