Аутентификация Azure в средах разработки Java

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

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

Сведения об устранении неполадок с проверкой подлинности среды разработки см. в разделе "Устранение неполадок с проверкой подлинности среды разработки".

учетные данные для входа с помощью кода устройства;

Учетные данные для входа с помощью кода устройства позволяют интерактивно выполнять аутентификацию пользователя на устройствах с ограниченным пользовательским интерфейсом. Он работает путем запроса пользователя посетить URL-адрес входа на компьютере с поддержкой браузера, когда приложение пытается пройти проверку подлинности. Затем пользователь вводит код устройства, упоминание в инструкциях вместе с учетными данными для входа. После успешной аутентификации приложение, которое запросило аутентификацию, успешно пройдет проверку на устройстве, на котором оно выполняется.

Дополнительные сведения см. в статье Платформа удостоверений Майкрософт и поток предоставления авторизации устройства OAuth 2.0.

Настройка потока кода устройства для приложений

Чтобы настроить аутентификацию пользователя в потоке кода устройства, выполните следующие действия:

  1. Перейдите к идентификатору Microsoft Entra в портал Azure и найдите регистрацию приложения.
  2. Перейдите к разделуПроверка подлинности.
  3. В разделе Suggested Redirected URIs (Предлагаемые перенаправленные URI) проверьте универсальный код ресурса (URI), который заканчивается на /common/oauth2/nativeclient.
  4. В разделе Тип клиента по умолчанию выберите Да для поля Считать приложение общедоступным клиентом.

Эти действия позволяют приложению проходить проверку подлинности, но у него по-прежнему нет разрешения на вход в идентификатор Microsoft Entra или доступ к ресурсам от вашего имени. Чтобы устранить эту проблему, перейдите к разделу Разрешения API и включите Microsoft Graph и ресурсы, к которым требуется доступ.

Вы также должны быть администратором вашего клиента, чтобы предоставить согласие приложению при первом входе.

Если вы не можете настроить параметр потока кода устройства на идентификаторе Microsoft Entra, может потребоваться, чтобы приложение было мультитенантным. Чтобы обеспечить в приложении поддержку нескольких арендаторов, перейдите на панель Проверка подлинности, а затем выберите Учетные записи в любом каталоге организации. Затем выберите значение Да для параметра Treat application as Public Client (Считать приложение общедоступным клиентом).

Проверка подлинности учетной записи пользователя в потоке кода устройства

В примере ниже демонстрируется аутентификация SecretClient из клиентской библиотеки azure-security-keyvault-secrets с помощью класса DeviceCodeCredential на устройстве Интернета вещей.

DeviceCodeCredential deviceCodeCredential = new DeviceCodeCredentialBuilder()
  .challengeConsumer(challenge -> {
    // lets user know of the challenge
    System.out.println(challenge.getMessage());
  }).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(deviceCodeCredential)
  .buildClient();

Учетные данные для входа интерактивно через браузер

Эти учетные данные позволяют интерактивно выполнять аутентификацию пользователя через системный браузер по умолчанию и обеспечивают беспроблемность аутентификации, позволяя вам использовать собственные учетные данные для аутентификации приложения.

Настройка потока OAuth 2 для входа приложений интерактивно через браузер

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

Вы можете обратить внимание, что в InteractiveBrowserCredentialBuilder требуется URL-адрес перенаправления. Добавьте URL-адрес перенаправления в подраздел URI перенаправления в разделе проверки подлинности зарегистрированного приложения Microsoft Entra.

Интерактивная проверка подлинности учетной записи пользователя в браузере

В примере ниже демонстрируется аутентификация SecretClient из клиентской библиотеки azure-security-keyvault-secrets с помощью InteractiveBrowserCredential.

InteractiveBrowserCredential interactiveBrowserCredential = new InteractiveBrowserCredentialBuilder()
  .clientId("<your client ID>")
  .redirectUrl("http://localhost:8765")
  .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(interactiveBrowserCredential)
  .buildClient();

Учетные данные для входа с помощью Azure CLI

Учетные данные Azure CLI проходят проверку подлинности в среде разработки с включенным пользователем или субъектом-службой в Azure CLI. Он использует Azure CLI, предоставленный пользователю, который уже вошел в систему, и использует ИНТЕРФЕЙС командной строки для проверки подлинности приложения с идентификатором Microsoft Entra.

Вход Azure CLI для AzureCliCredential

Войдите в систему от имени пользователя, используя следующую команду Azure CLI:

az login

Войдите в систему от имени субъекта-службы, используя следующую команду:

az login \
    --service-principal \
    --username <client-ID> \
    --password <client-secret> \
    --tenant <tenant-ID>

Если у этой учетной записи или субъекта-службы есть доступ к нескольким арендаторам, убедитесь, что в выходных данных следующей команды состояние Enabled (Включено) указано для нужного арендатора или подписки:

az account list

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

az account get-access-token

Возможно, этот процесс придется повторить по истечении некоторого периода времени в зависимости от срока действия маркеров обновления в организации. Как правило, период действия маркера обновления составляет от нескольких недель до нескольких месяцев. AzureCliCredential запрашивает повторной вход.

Аутентификация учетной записи пользователя с помощью Azure CLI

В примере ниже демонстрируется аутентификация SecretClient из клиентской библиотеки azure-security-keyvault-secrets с помощью AzureCliCredential на рабочей станции, где установлен Azure CLI и выполнен вход в систему.

AzureCliCredential cliCredential = new AzureCliCredentialBuilder().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(cliCredential)
  .buildClient();

Учетные данные для входа с помощью IntelliJ

Учетные данные IntelliJ проходят проверку подлинности в среде разработки с учетной записью в Azure набор средств для IntelliJ. Он использует сведения о пользователе, выполнившего вход в интегрированную среду разработки IntelliJ, и использует ее для проверки подлинности приложения с идентификатором Microsoft Entra.

Вход Azure Toolkit for IntelliJ для IntelliJCredential

Выполните следующие действия, чтобы войти в систему:

  1. В окне IntelliJ откройте подключаемые модули Параметры > файлов > .
  2. Найдите "Azure набор средств для IntelliJ" в Marketplace. Установите и перезапустите интегрированную среду разработки.
  3. Поиск нового элемента меню "Средства > входа Azure Azure > "
  4. Имя входа устройства помогает войти в систему в качестве учетной записи пользователя. Следуйте инструкциям, чтобы войти на login.microsoftonline.com веб-сайт с помощью кода устройства. IntelliJ предложит выбрать подписки. Выберите те из них, где находятся нужные ресурсы.

В Windows также требуется путь к базе данных KeePass для чтения учетных данных IntelliJ. Путь можно найти в параметрах IntelliJ в разделе "Файл > Параметры > внешний вид и поведение > системы > Параметры паролей". Запишите расположение пути KeePassDatabase.

Аутентификация учетной записи пользователя с помощью IntelliJ IDEA

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

IntelliJCredential intelliJCredential = new IntelliJCredentialBuilder()
  // KeePass configuration isrequired only for Windows. No configuration needed for Linux / Mac.
  .keePassDatabasePath("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(intelliJCredential)
  .buildClient();

Учетные данные для входа с помощью Visual Studio Code

Учетные данные Visual Studio Code позволяют выполнять аутентификацию в средах разработки, где установлен VS Code вместе с расширением учетной записи Azure для VS Code. Он использует сведения о пользователе, выполнившего вход в интегрированную среду разработки VS Code, и использует его для проверки подлинности приложения с идентификатором Microsoft Entra.

Вход в расширение учетной записи Azure для Visual Studio Code для VisualStudioCodeCredential

Интеграция Nn с расширением учетной записи Azure обрабатывает проверку подлинности Visual Studio Code. Чтобы использовать эту форму проверки подлинности, установите расширение учетной записи Azure, а затем откройте > палитру команд для выполнения команды Azure: вход. Эта команда открывает окно браузера и отображает страницу для входа в Azure. После завершения процесса входа вы можете закрыть браузер, как показано ниже. При запуске приложения (в отладчике или в любом месте на компьютере разработки) используются учетные данные из входа.

Аутентификация учетной записи пользователя с помощью Visual Studio Code

В следующем примере демонстрируется аутентификация SecretClient из клиентской библиотеки azure-security-keyvault-secrets с помощью VisualStudioCodeCredential, на рабочей станции, где установлен Visual Studio Code и пользователь выполнил вход с помощью учетной записи Azure.

VisualStudioCodeCredential visualStudioCodeCredential = new VisualStudioCodeCredentialBuilder().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(visualStudioCodeCredential)
  .buildClient();

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

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

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

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