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