Зарегистрируйте приложение Azure Enterprise программно, используя код .NET - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь зарегистрировать корпоративное приложение (v2) программно, используя код .NET.

Я знаю, что они могут быть зарегистрированы на здесь , но я хочу сделать это программно.

Используя Graph Api Explorer , можно по существу зарегистрировать приложения V1, выполнив POST с этой полезной нагрузкой

{"displayName": "My App"}

до

https://graph.microsoft.com/beta/applications

В результате создается новое приложение

Я могу получить это вновь созданное приложение и любые существующие с помощьювыполнение GET для https://graph.microsoft.com/beta/applications (очевидно, требуется авторизация)

Я также могу получить конкретное приложение, выполнив GET, как этот

https://graph.microsoft.com/beta/applications/f0bc4548-deaf-c0de-a123-586b578cf357

Обратите внимание, что Id - это идентификатор объекта, а не AppId

Если я попробую описать выше с идентификатором объекта корпоративного приложения, я не найден.

Я могу найти предприятиеприложения с использованием directoryObjects, но его невозможно создать с помощью этого пути запроса.

Есть идеи о том, как это сделать.это?

Кстати, я думаю, что эти приложения V2 можно сделать с помощью powershell, но опять же, это не то, что мне нужно.

Спасибо

1 Ответ

0 голосов
/ 24 октября 2018

В вашем вопросе есть несколько разных частей.Я постараюсь охватить каждый из них в отдельности.Сначала я начну с простого.

1.GET для корпоративных приложений (почему вы получаете не найден прямо сейчас)

Я также могу получить конкретное приложение, выполнив GET, как это

https://graph.microsoft.com/beta/applications/f0bc4548-deaf-c0de-a123-586b578cf357

Обратите внимание, что Id - это идентификатор объекта, а не AppId

Если я попробую описать выше с идентификатором объекта корпоративного приложения, я не получу.

То, что вы видите как «Корпоративное приложение» на портале Azure, на самом деле называется «Принципал службы» за кулисами с точки зрения API.Сейчас вы ищете его в списке «приложений» (которые соответствуют «регистрации приложений» с точки зрения портала Azure) и, следовательно, не можете его найти.

Так что, если вы ищете какое-либокорпоративное приложение, использующее Microsoft Graph Explorer, попробуйте использовать эту конечную точку бета-версии Microsoft Graph ( принципал службы GET )

GET https://graph.microsoft.com/beta/servicePrincipals
or
GET https://graph.microsoft.com/beta/servicePrincipals/{id}

зарегистрированное приложение, принципал службы и их отношения

Я бы также предложил прочитать эту документацию о Приложениях, принципах обслуживания и отношениях между ними в Microsoft Docs .Это намного более подробно, чем то, что я могу кратко объяснить здесь.Один очень важный момент, особенно для мультитенантных приложений из этой документации, заключается в том, что объект приложения следует рассматривать как глобальное представление вашего приложения для использования всеми арендаторами, а субъект службы - как локальное представление для использования в конкретном арендаторе.

2.Ваш первоначальный вопрос о создании приложения Enterprise (v2) программно с использованием кода .NET

a.Создание «Зарегистрированного приложения»

Это можно сделать с помощью Создать конечную точку приложения .Это тот, который вы также упомянули.

ПРИМЕЧАНИЕ : эту же конечную точку можно использовать для создания приложений Azure AD V1 или V2.Пока у вас достаточно разрешений, это отлично работает для обоих.Я тоже это проверял.Для V2 я только что вошел в систему с пользователем, который принадлежал к этому каталогу и имел роль глобального администратора.

POST https://graph.microsoft.com/beta/applications

Как это сделать, используя .NET (скажем, код C #).

Этобыло бы здорово сделать это, используя Microsoft Graph Library для .NET , но я не нашел там достаточно приложений для приложений достаточно быстро, вероятно, потому что это доступно только в конечной точке бета-версии, а SDK использует стабильную версию 1.0метаданные.

В любом случае вы всегда можете напрямую вызвать конечную точку, используя код C #, например:

string json = "{ \"displayName\": \"My Cool App 1\"}";
string graphRequest = $"{graphResourceUri}/beta/applications";
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, graphRequest);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.SendAsync(request);

b.Создание корпоративного приложения (или принципала службы)

AFAIK это невозможно даже при использовании конечной точки бета-версии для Microsoft Graph API.Я говорю это потому, что для Документы Microsoft Graph, относящиеся к принципам обслуживания Я вижу только Список, Получить и Обновить, но не Создать.

Если вам все еще нужно это сделать, это возможно с помощью Azure.AD Graph API.Фактически, если вы делаете это для производственного приложения, вам следует рассмотреть возможность использования API-интерфейса Azure AD Graph, поскольку конечная точка бета-версии для Microsoft Graph не гарантируется стабильной все время, и критические изменения могут быть внесены без какого-либо уведомления.

Несмотря на то, что по возможности следует использовать Microsoft Graph вместо API-интерфейса Azure AD Graph, связанные с управлением приложениями сценарии относятся к тем немногим случаям, когда API-интерфейс Microsoft Graph еще не настиг.

Документация API-интерфейса Azure AD Graph для принципала обслуживания

Ознакомьтесь с поддерживаемыми операциями.Создать (POST) можно там.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...