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


Аутентификация в Azure с использованием учетной записи службы

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

Для получения дополнительной информации см. Объекты приложения и учетной записи службы в Microsoft Entra ID. Сведения об устранении неполадок проверки подлинности субъекта-службы см. в разделе "Устранение неполадок с проверкой подлинности субъекта-службы".

Создание субъекта-службы с помощью Azure CLI

Используйте следующие примеры Azure CLI для создания или получения учетных данных закрытого ключа клиента.

Используйте следующую команду, чтобы создать учетную запись службы и настроить доступ к ресурсам Azure.

az ad sp create-for-rbac \
    --name <your application name> \
    --role Contributor \
    --scopes /subscriptions/mySubscriptionID

Эта команда возвращает значение, аналогичное следующим выходным данным:

{
"appId": "generated-app-ID",
"displayName": "dummy-app-name",
"name": "http://dummy-app-name",
"password": "random-password",
"tenant": "tenant-ID"
}

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

az ad sp create-for-rbac \
    --name <your application name> \
    --role Contributor \
    --cert <certificate name> \
    --create-cert

Проверьте возвращенные учетные данные и запишите следующие сведения:

  • AZURE\_CLIENT\_ID для идентификатора приложения.
  • AZURE\_CLIENT\_SECRET для пароля.
  • AZURE\_TENANT\_ID для арендатора.

Учетные данные секрета клиента

Эти учетные данные проходят проверку подлинности созданного субъекта-службы с помощью секрета клиента (пароль). В этом примере демонстрируется проверка подлинности SecretClient из клиентской библиотеки azure-security-keyvault-secrets с использованием ClientSecretCredential.

/**
 *  Authenticate with client secret.
 */
ClientSecretCredential clientSecretCredential = new ClientSecretCredentialBuilder()
  .clientId("<your client ID>")
  .clientSecret("<your client secret>")
  .tenantId("<your tenant 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(clientSecretCredential)
  .buildClient();

Учетные данные клиентского сертификата

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

/**
 *  Authenticate with a client certificate.
 */
ClientCertificateCredential clientCertificateCredential = new ClientCertificateCredentialBuilder()
  .clientId("<your client ID>")
  .pemCertificate("<path to PEM certificate>")
  // Choose between either a PEM certificate or a PFX certificate.
  //.pfxCertificate("<path to PFX certificate>")
  //.clientCertificatePassword("PFX CERTIFICATE PASSWORD")
  .tenantId("<your tenant 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(clientCertificateCredential)
  .buildClient();

Дальнейшие шаги

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

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

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