В вашем вопросе есть несколько разных частей.Я постараюсь охватить каждый из них в отдельности.Сначала я начну с простого.
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) можно там.