Аутентификация решений по управлению пакетной службой с помощью Active Directory

Приложения, вызывающие проверку подлинности службы управления пакетная служба Azure с помощью библиотеки проверки подлинности Майкрософт (идентификатор Microsoft Entra). Идентификатор Microsoft Entra — это мультитенантная облачная служба каталога и управления удостоверениями Майкрософт. Сам Azure использует идентификатор Microsoft Entra для проверки подлинности своих клиентов, администраторов служб и пользователей организации.

Библиотека .NET для управления пакетной службой предоставляет типы для работы с учетными записями пакетной службы, ключами учетной записи, приложениями и пакетами приложений. Данная библиотека является клиентом поставщика ресурсов Azure и используется совместно с Azure Resource Manager для программного управления этими ресурсами. Идентификатор Microsoft Entra требуется для проверки подлинности запросов, выполненных через любой клиент поставщика ресурсов Azure, включая библиотеку .NET для управления пакетной службой и с помощью Azure Resource Manager.

В этой статье мы рассмотрим использование идентификатора Microsoft Entra для проверки подлинности из приложений, использующих библиотеку .NET для управления пакетной службой. Мы покажем, как использовать идентификатор Microsoft Entra для проверки подлинности администратора подписки или соадминистратора с помощью встроенной проверки подлинности. Мы используем пример проекта AccountManagement , доступный на сайте GitHub, для пошагового использования идентификатора Microsoft Entra с библиотекой .NET для управления пакетной службой.

Дополнительные сведения об использовании библиотеки .NET для управления пакетной службой и примера AccountManagement см. в статье Управление учетными записями и квотами пакетной службы с помощью клиентской библиотеки .NET для управления пакетной службой.

Регистрация приложения с помощью идентификатора Microsoft Entra

Библиотека проверки подлинности Майкрософт (MSAL) предоставляет программный интерфейс для идентификатора Microsoft Entra для использования в приложениях. Чтобы вызвать MSAL из приложения, необходимо зарегистрировать приложение в клиенте Microsoft Entra. При регистрации приложения вы предоставляете идентификатор Microsoft Entra с информацией о приложении, включая имя для него в клиенте Microsoft Entra. Затем идентификатор Microsoft Entra предоставляет идентификатор приложения, который используется для связывания приложения с идентификатором Microsoft Entra во время выполнения. Дополнительные сведения об идентификаторе приложения см. в разделе "Объекты приложения и субъекта-службы" в идентификаторе Microsoft Entra.

Чтобы зарегистрировать пример приложения AccountManagement, выполните действия, описанные в разделе "Добавление приложения" в разделе "Интеграция приложений с идентификатором Microsoft Entra". Укажите в качестве типа приложения собственное клиентское приложение. urn:ietf:wg:oauth:2.0:oob — это стандартный отраслевой универсальный код ресурса (URI) OAuth 2.0, используемый в качестве URI перенаправления. Тем не менее в качестве URI перенаправления можно указать любой допустимый универсальный код ресурса (URI) (например, http://myaccountmanagementsample). Реальную конечную точку указывать необязательно.

Adding an application

После завершения процесса регистрации отобразится указанный для вашего приложения идентификатор приложения и объекта (субъекта-службы).

Completed registration process

Предоставление доступа API Azure Resource Manager к приложению

Теперь необходимо делегировать доступ к приложению для API Azure Resource Manager. Идентификатор Microsoft Entra для API Resource Manager — ЭТО API управления службами Windows Azure.

На портале Azure сделайте следующее:

  1. В области навигации слева на портале Azure выберите Все службы, щелкните Регистрация приложений, а затем нажмите кнопку Добавить.

  2. Найдите имя приложения в списке зарегистрированных приложений:

    Search for your application name

  3. Откройте колонку Параметры. В разделе Доступ через API выберите Необходимые разрешения.

  4. Щелкните Добавить для добавления нового необходимого разрешения.

  5. На шаге 1 введите API управления службами Windows Azure, выберите этот API в списке результатов и нажмите кнопку Выбрать.

  6. На шаге 2 установите флажок рядом с параметром Access Azure classic deployment model as organization users (Доступ к классической модели развертывания Azure от имени пользователей организации) и нажмите кнопку Выбрать.

  7. Нажмите кнопку Готово.

В колонке "Необходимые разрешения" теперь показано, что разрешения для приложения предоставляются как API MSAL, так и Resource Manager. Разрешения предоставляются MSAL по умолчанию при первой регистрации приложения с идентификатором Microsoft Entra.

Delegate permissions to the Azure Resource Manager API

Конечные точки Microsoft Entra

Чтобы пройти проверку подлинности решений пакетного управления с помощью идентификатора Microsoft Entra, вам потребуется две известные конечные точки.

  • Общая конечная точка Microsoft Entra предоставляет универсальный интерфейс сбора учетных данных, если конкретный клиент не предоставляется, как в случае интегрированной проверки подлинности:

    https://login.microsoftonline.com/common

  • Конечная точка Azure Resource Manager используется для получения токена для аутентификации запросов к службе управления пакетной службой:

    https://management.core.windows.net/

Пример приложения AccountManagement определяет константы для этих конечных точек. Оставьте их без изменений:

// Azure Active Directory "common" endpoint.
private const string AuthorityUri = "https://login.microsoftonline.com/common";
// Azure Resource Manager endpoint
private const string ResourceUri = "https://management.core.windows.net/";

Ссылка на идентификатор приложения

Клиентское приложение использует идентификатор приложения (также называемый идентификатором клиента) для доступа к идентификатору Microsoft Entra во время выполнения. После регистрации приложения в портал Azure обновите код, чтобы использовать идентификатор приложения, предоставленный идентификатором Microsoft Entra для зарегистрированного приложения. В примере приложения AccountManagement скопируйте идентификатор приложения из портала Azure в соответствующую константу:

// Specify the unique identifier (the "Client ID") for your application. This is required so that your
// native client application (i.e. this sample) can access the Microsoft Graph API. For information
// about registering an application in Azure Active Directory, please see "Register an application with the Microsoft identity platform" here:
// https://learn.microsoft.com/azure/active-directory/develop/quickstart-register-app
private const string ClientId = "<application-id>";

Скопируйте также URI перенаправления, который вы указали во время процесса регистрации. URI перенаправления, указанный в коде, должен соответствовать URI перенаправления, который был указан при регистрации приложения.

// The URI to which Azure AD will redirect in response to an OAuth 2.0 request. This value is
// specified by you when you register an application with AAD (see ClientId comment). It does not
// need to be a real endpoint, but must be a valid URI (e.g. https://accountmgmtsampleapp).
private const string RedirectUri = "http://myaccountmanagementsample";

Получение маркера проверки подлинности Microsoft Entra

После регистрации примера AccountManagement в клиенте Microsoft Entra и обновления примера исходного кода со значениями пример готов к проверке подлинности с помощью идентификатора Microsoft Entra. При запуске примера MSAL пытается получить маркер проверки подлинности. На этом этапе предлагается ввести учетные данные Майкрософт:

// Obtain an access token using the "common" AAD resource. This allows the application
// to query AAD for information that lies outside the application's tenant (such as for
// querying subscription information in your Azure account).
AuthenticationContext authContext = new AuthenticationContext(AuthorityUri);
AuthenticationResult authResult = authContext.AcquireToken(ResourceUri,
                                                        ClientId,
                                                        new Uri(RedirectUri),
                                                        PromptBehavior.Auto);

После указания учетных данных пример приложения может отправлять запросы, прошедшие проверку подлинности, к службе управления пакетами.

Следующие шаги