Проверка подлинности приложений Java, размещенных в Azure
В этой статье описывается, как библиотека удостоверений Azure поддерживает проверку подлинности маркера Microsoft Entra для приложений, размещенных в Azure. Эта поддержка возможна с помощью набора реализаций TokenCredential
, которые рассматриваются в этой статье.
В этой статье рассматриваются следующие темы:
Сведения об устранении неполадок проверки подлинности, связанных с размещенными в Azure приложениями, см. в статье "Устранение неполадок, размещенных в Azure".
DefaultAzureCredential
DefaultAzureCredential
объединяет учетные данные, которые обычно используются для аутентификации при развертывании, с учетными данными, используемыми для аутентификации в среде разработки. Дополнительные сведения см. в обзоре DefaultAzureCredential.
Настройка DefaultAzureCredential
DefaultAzureCredential
поддерживает набор конфигураций с помощью методов задания в DefaultAzureCredentialBuilder
или переменных среды.
- Установка переменных среды и
AZURE_TENANT_ID
, как определено в переменныхAZURE_CLIENT_SECRET
AZURE_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".
После настройки аутентификации ознакомьтесь со статьей Настройка ведения журнала в пакете Azure SDK для Java, чтобы получить сведения о возможностях ведения журнала, предоставляемых пакетом SDK