Проверка подлинности приложений Java, размещенных в Azure

В этой статье описывается, как библиотека удостоверений Azure поддерживает проверку подлинности маркера Microsoft Entra для приложений, размещенных в Azure. Эта поддержка возможна с помощью набора реализаций TokenCredential , которые рассматриваются в этой статье.

В этой статье рассматриваются следующие темы:

Сведения об устранении неполадок проверки подлинности, связанных с размещенными в Azure приложениями, см. в статье "Устранение неполадок, размещенных в Azure".

Учетные данные Azure по умолчанию

DefaultAzureCredential подходит для большинства сценариев, когда приложение в конечном итоге работает в облаке Azure. DefaultAzureCredential объединяет учетные данные, которые обычно используются для аутентификации при развертывании, с учетными данными, используемыми для аутентификации в среде разработки. DefaultAzureCredential пытается пройти проверку подлинности с помощью следующих механизмов в порядке:

DefaultAzureCredential authentication flow

  • Среда — DefaultAzureCredential считывает сведения учетной записи, указанные с помощью переменных среды, и использует ее для проверки подлинности.
  • Управляемое удостоверение. Если приложение развертывается на узле Azure с включенным управляемым удостоверением, DefaultAzureCredential выполняет проверку подлинности с помощью этой учетной записи.
  • IntelliJ — если вы прошли проверку подлинности через Azure набор средств для IntelliJ, DefaultAzureCredential выполняет проверку подлинности с помощью этой учетной записи.
  • Visual Studio Code. Если вы прошли проверку подлинности с помощью подключаемого модуля учетной записи Azure Visual Studio Code, DefaultAzureCredential выполняет проверку подлинности с помощью этой учетной записи.
  • Azure CLI. Если вы выполнили проверку подлинности учетной записи с помощью команды Azure CLI az login , DefaultAzureCredential выполняет проверку подлинности с помощью этой учетной записи.

Настройка DefaultAzureCredential

DefaultAzureCredential поддерживает набор конфигураций с помощью методов задания в DefaultAzureCredentialBuilder или переменных среды.

  • Установка переменных среды иAZURE_TENANT_ID, как определено в переменныхAZURE_CLIENT_SECRETAZURE_CLIENT_IDсреды, настраивает DefaultAzureCredential проверку подлинности в качестве субъекта-службы, указанного значениями.
  • Установка .managedIdentityClientId(String) в построителе или переменной AZURE_CLIENT_ID среды настраивается DefaultAzureCredential для проверки подлинности в качестве определяемого пользователем управляемого удостоверения, оставляя их пустыми, настраивает его для проверки подлинности в качестве управляемого удостоверения, назначаемого системой.
  • Настройка .tenantId(String) в построителе или переменной AZURE_TENANT_ID среды настраивается для проверки подлинности в определенном клиенте для общего кэша маркеров DefaultAzureCredential , Visual Studio Code и IntelliJ IDEA.
  • Настройка переменной AZURE_USERNAME среды настраивается DefaultAzureCredential для выбора соответствующего кэшированного токена из кэша общих маркеров.
  • Настройка .intelliJKeePassDatabasePath(String) построителя настраивает DefaultAzureCredential чтение определенного файла KeePass при проверке подлинности с помощью учетных данных IntelliJ.

Проверка подлинности с помощью метода DefaultAzureCredential

В следующем примере демонстрируется проверка подлинности SecretClient из клиентской библиотеки секретов azure-security-keyvault-secret с помощью DefaultAzureCredential.

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(new DefaultAzureCredentialBuilder().build())
  .buildClient();

Проверка подлинности назначенного пользователем управляемого удостоверения с помощью DefaultAzureCredential

В следующем примере демонстрируется проверка подлинности SecretClient из клиентской библиотеки секретов azure-security-keyvault-secret , развернутой DefaultAzureCredential в ресурсе Azure с настроенным управляемым удостоверением, назначаемым пользователем.

/**
 * The default credential uses the user-assigned managed identity with the specified client ID.
 */
DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
  .managedIdentityClientId("<managed identity client ID>")
  .build();

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(defaultCredential)
  .buildClient();

Проверка подлинности пользователя в Azure Toolkit for IntelliJ с помощью DefaultAzureCredential

В следующем примере демонстрируется проверка подлинности SecretClient из клиентской библиотеки azure-security-keyvault-secret с помощью рабочей DefaultAzureCredentialстанции, на которой установлена IntelliJ IDEA, и пользователь выполнил вход с помощью учетной записи Azure в Azure набор средств для IntelliJ.

Дополнительные сведения о настройке IntelliJ IDEA см. в статье Вход в Azure Toolkit for IntelliJ для IntelliJCredential.

/**
 * The default credential uses the KeePass database path to find the user account in IntelliJ on Windows.
 */
// KeePass configuration is required only for Windows. No configuration needed for Linux / Mac.
DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
  .intelliJKeePassDatabasePath("C:\\Users\\user\\AppData\\Roaming\\JetBrains\\IdeaIC2020.1\\c.kdbx")
  .build();

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(defaultCredential)
  .buildClient();

Учетные данные управляемого удостоверения

Функция управляемого удостоверения проверяет подлинность управляемого удостоверения ресурса Azure (назначенного системой или пользователем). Таким образом, если приложение работает в ресурсе Azure, поддерживающем управляемое удостоверение с помощью IDENTITY/MSIконечных IMDS точек или обоих, эти учетные данные получают проверку подлинности приложения и предлагают отличный интерфейс проверки подлинности без секрета.

См. сведения об управляемых удостоверениях для ресурсов Azure.

Проверка подлинности в Azure на основе управляемых удостоверений

В следующем примере демонстрируется проверка подлинности SecretClient из клиентской библиотеки azure-security-keyvault-secrets с помощью ManagedIdentityCredential на виртуальной машине, в службе приложений, приложении-функции, Cloud Shell, Service Fabric, ARC или среде AKS в Azure с поддержкой управляемых удостоверений, назначаемых системой или пользователем.

/**
 * Authenticate with a managed identity.
 */
ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredentialBuilder()
  .clientId("<user-assigned managed identity client ID>") // required only for user-assigned
  .build();

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(managedIdentityCredential)
  .buildClient();

Переменные среды

DefaultAzureCredential и EnvironmentCredential можно настроить с помощью переменных среды. Для каждого типа проверки подлинности требуются значения конкретных переменных:

Субъект-служба с секретом

Имя переменной Значение
AZURE_CLIENT_ID Идентификатор приложения Microsoft Entra.
AZURE_TENANT_ID Идентификатор клиента Microsoft Entra приложения.
AZURE_CLIENT_SECRET Один из секретов клиента приложения.

Субъект-служба с сертификатом

Имя переменной Значение
AZURE_CLIENT_ID Идентификатор приложения Microsoft Entra.
AZURE_TENANT_ID Идентификатор клиента Microsoft Entra приложения.
AZURE_CLIENT_CERTIFICATE_PATH Путь к файлу сертификата в кодировке PEM, включая закрытый ключ (без защиты паролем).

Имя пользователя и пароль

Имя переменной Значение
AZURE_CLIENT_ID Идентификатор приложения Microsoft Entra.
AZURE_USERNAME Имя пользователя (обычно это адрес электронной почты).
AZURE_PASSWORD Пароль, связанный с данным именем пользователя.

В этом порядке выполняется попытка настройки. Например, если заданы значения секрета клиента и сертификата, используется секрет клиента.

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

В этой статье рассматривается проверка подлинности приложений, размещенных в Azure. Эта форма проверки подлинности является лишь одним из нескольких методов аутентификации в Azure SDK для Java. В указанных ниже статьях описаны другие способы.

Если возникнут проблемы, связанные с проверкой подлинности приложения, размещенной в Azure, см . статью "Устранение неполадок с проверкой подлинности приложения, размещенного в Azure".

После настройки аутентификации ознакомьтесь со статьей Настройка ведения журнала в пакете Azure SDK для Java, чтобы получить сведения о возможностях ведения журнала, предоставляемых пакетом SDK