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

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

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

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

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

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

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

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

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

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

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

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

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

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

В примере ниже демонстрируется проверка подлинности SecretClient из клиентской библиотеки секретов Azure Key Vault для Java с помощью DeviceCodeCredential на устройстве Интернета вещей.

/**
 * Authenticate with device code credential.
 */
DeviceCodeCredential deviceCodeCredential = new DeviceCodeCredentialBuilder()
    .challengeConsumer(challenge -> {
    // Lets the user know about 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.

/**
 * Authenticate interactively in the browser.
 */
InteractiveBrowserCredential interactiveBrowserCredential = new InteractiveBrowserCredentialBuilder()
    .clientId("<your app client ID>")
    .redirectUrl("YOUR_APP_REGISTERED_REDIRECT_URL")
    .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();

учетные данные пароля и имени пользователя.

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

/**
 * Authenticate with username, password.
 */
UsernamePasswordCredential usernamePasswordCredential = new UsernamePasswordCredentialBuilder()
    .clientId("<your app client ID>")
    .username("<your username>")
    .password("<your password>")
    .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(usernamePasswordCredential)
    .buildClient();

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

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

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

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

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