Поделиться через


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

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

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

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

DefaultAzureCredential

DefaultAzureCredential объединяет учетные данные, которые обычно используются для аутентификации при развертывании, с учетными данными, используемыми для аутентификации в среде разработки. Дополнительные сведения см. в обзоре 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 для проверки подлинности в определенном клиенте для общего кэша маркеров или IntelliJ IDEA.
  • Настройка переменной AZURE_USERNAME среды настраивается DefaultAzureCredential для выбора соответствующего кэшированного токена из кэша общих маркеров.

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

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

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

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

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

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

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

ManagedIdentityCredential

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

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

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

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

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

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<KEY_VAULT_NAME>.vault.azure.net")
  .credential(credential)
  .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_CERTIFICATE_PASSWORD (необязательно) Пароль файла сертификата, если таковой есть.
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN (необязательно) Отправка цепочки сертификатов в заголовке x5c для поддержки имени субъекта или проверки подлинности на основе издателя.

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

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

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

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

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

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

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