Лучшим способом добиться того же, то есть зарегистрировать приложение в Azure AD, будет использование клиентской библиотеки графиков Azure AD
Я говорю, что это лучший подход, поскольку при использованииклиентская библиотека, в которой вы получаете множество преимуществ, таких как отсутствие необработанной обработки HTTP-запросов, написание более удобного и декларативного кода на C #, в зависимости от хорошо протестированной библиотеки, поддержки асинхронности и т. д.
POST https://graph.windows.net/{tenant-id}/applications?api-version=1.6
Вот пример кода (C #) для создания приложения Azure AD.
Обратите внимание, что я сохранил флаг app.PublicClient как true для регистрации в качестве собственного приложения.Вы можете установить значение false, если хотите зарегистрировать его как веб-приложение.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Azure.ActiveDirectory.GraphClient;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
namespace CreateAzureADApplication
{
class Program
{
static void Main(string[] args)
{
ActiveDirectoryClient directoryClient;
ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(new Uri("https://graph.windows.net/{yourAADGUID}"),
async () => await GetTokenForApplication());
Application app = new Application();
app.DisplayName = "My Azure AD Native App";
app.PublicClient = true;
app.Homepage = "https://myazureadnativeapp";
activeDirectoryClient.Applications.AddApplicationAsync(app).GetAwaiter().GetResult();
}
public static async Task<string> GetTokenForApplication()
{
AuthenticationContext authenticationContext = new AuthenticationContext(
"https://login.microsoftonline.com/{yourAADGUID}",
false);
// Configuration for OAuth client credentials
ClientCredential clientCred = new ClientCredential("yourappclientId",
"yourappclientsecret"
);
AuthenticationResult authenticationResult =
await authenticationContext.AcquireTokenAsync("https://graph.windows.net", clientCred);
return authenticationResult.AccessToken;
}
}
}
Настройка : у меня зарегистрировано приложение, зарегистрированное в Azure AD, для которого требуются разрешения в качестве разрешения приложения- Чтение и запись всех приложений и предоставление разрешений сделано для этого приложения.Теперь, используя идентификатор клиента этого приложения и его секретный ключ, получается токен и вызывается API-интерфейс Azure AD Graph для создания приложения.Не обязательно использовать разрешения приложения, вы также можете использовать делегированные разрешения, запрашивая учетные данные у пользователя.См. Ссылки на более подробные примеры (старые, но все еще полезные).
Кстати, вы можете сделать это, используя более новый Microsoft Graph API , а также
POST https://graph.microsoft.com/beta/applications
, но возможность создавать приложения все еще находится в стадии бета-тестирования и, следовательно, не рекомендуется дляпроизводственные нагрузки.Поэтому, несмотря на то, что Microsoft Graph API был бы рекомендован для большинства сценариев, по крайней мере, для этого, использование Azure AD Graph API является подходящим способом.
Я рассмотрел это чуть более подробно в аналогичном ТАК сообщение здесь.