Sdílet prostřednictvím


Ověřování aplikací Java hostovaných v Azure

Tento článek popisuje, jak knihovna Identit Azure podporuje ověřování tokenů Microsoft Entra pro aplikace hostované v Azure. Tato podpora je možná prostřednictvím sady TokenCredential implementací, které jsou popsány v tomto článku.

Tento článek se zabývá následujícími tématy:

Řešení potíží s ověřováním souvisejících s aplikacemi hostovanými v Azure najdete v tématu Řešení potíží s ověřováním aplikací hostovaných v Azure.

DefaultAzureCredential

DefaultAzureCredential kombinuje přihlašovací údaje, které se běžně používají k ověřování při nasazení, s přihlašovacími údaji, které se používají k ověření ve vývojovém prostředí. Další informace naleznete v tématu DefaultAzureCredential přehled.

Konfigurace DefaultAzureCredential

DefaultAzureCredential podporuje sadu konfigurací prostřednictvím setter v DefaultAzureCredentialBuilder proměnných prostředí nebo proměnných prostředí.

  • Nastavení proměnných AZURE_CLIENT_IDprostředí , AZURE_CLIENT_SECRETa AZURE_TENANT_ID jak je definováno v proměnných prostředí konfiguruje DefaultAzureCredential pro ověření jako instanční objekt určený hodnotami.
  • Nastavení .managedIdentityClientId(String) pro tvůrce nebo proměnnou AZURE_CLIENT_ID prostředí se konfiguruje DefaultAzureCredential tak, aby se ověřilo jako spravovaná identita přiřazená uživatelem, zatímco je prázdné, aby se ověřilo jako spravovaná identita přiřazená systémem.
  • Nastavení .tenantId(String) tvůrce nebo proměnné AZURE_TENANT_ID prostředí se konfiguruje DefaultAzureCredential tak, aby se ověřilo v konkrétním tenantovi pro mezipaměť sdíleného tokenu nebo IntelliJ IDEA.
  • Nastavení proměnné AZURE_USERNAME prostředí se konfiguruje DefaultAzureCredential tak, aby z mezipaměti sdíleného tokenu vybrali odpovídající token uložený v mezipaměti.

Ověřování pomocí DefaultAzureCredential

Následující příklad ukazuje ověření SecretClient z klientské knihovny azure-security-keyvault-secrets pomocí 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();

Ověření spravované identity přiřazené uživatelem pomocí DefaultAzureCredential

Následující příklad ukazuje ověření SecretClient z klientské knihovny azure-security-keyvault-secrets pomocí DefaultAzureCredential nasazené do prostředku Azure s nakonfigurovanou spravovanou identitou přiřazenou uživatelem.

/**
 * 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 ověřuje spravovanou identitu (přiřazenou systémem nebo přiřazenou uživatelem) prostředku Azure. Pokud tedy aplikace běží v prostředku Azure, který podporuje spravovanou identitu prostřednictvím IDENTITY/MSIkoncových IMDS bodů nebo obojího, získá tyto přihlašovací údaje vaši aplikaci ověřenou a nabízí prostředí pro ověřování bez tajných kódů.

Další informace najdete v tématu, které vysvětluje, co jsou spravované identity pro prostředky Azure.

Ověřování v Azure pomocí spravované identity

Následující příklad ukazuje ověření SecretClient z klientské knihovny azure-security-keyvault-secrets pomocí ManagedIdentityCredential virtuálního počítače, služby App Service, aplikace Functions, Cloud Shellu, Service Fabric, Arc nebo AKS v Azure s povolenou spravovanou identitou přiřazenou systémem nebo uživatelem.

/**
 * 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();

Proměnné prostředí

Můžete nakonfigurovat DefaultAzureCredential a EnvironmentCredential použít proměnné prostředí. Každý typ ověřování vyžaduje hodnoty pro konkrétní proměnné:

Instanční objekt s tajným kódem

Název proměnné Hodnota
AZURE_CLIENT_ID ID aplikace Microsoft Entra.
AZURE_TENANT_ID ID tenanta Microsoft Entra aplikace.
AZURE_CLIENT_SECRET Jeden z tajných kódů klienta aplikace.

Instanční objekt s certifikátem

Název proměnné Hodnota
AZURE_CLIENT_ID ID aplikace Microsoft Entra.
AZURE_TENANT_ID ID tenanta Microsoft Entra aplikace.
AZURE_CLIENT_CERTIFICATE_PATH Cesta k souboru certifikátu s kódováním PEM včetně privátního klíče (bez ochrany heslem)
AZURE_CLIENT_CERTIFICATE_PASSWORD (volitelné) Heslo souboru certifikátu, pokud existuje.
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN (volitelné) Odešle řetěz certifikátů v hlavičce x5c, aby podporoval ověřování na základě názvu subjektu nebo vystavitele.

Uživatelské jméno a heslo

Název proměnné Hodnota
AZURE_CLIENT_ID ID aplikace Microsoft Entra.
AZURE_TENANT_ID ID tenanta Microsoft Entra aplikace.
AZURE_USERNAME Uživatelské jméno (obvykle e-mailová adresa).
AZURE_PASSWORD Přidružené heslo pro dané uživatelské jméno.

Konfigurace se v tomto pořadí pokusí. Pokud jsou například k dispozici hodnoty pro tajný klíč klienta a certifikát, použije se tajný klíč klienta.

Další kroky

Tento článek se zabýval ověřováním pro aplikace hostované v Azure. Tato forma ověřování je jedním z několika způsobů, jak se můžete ověřit v sadě Azure SDK pro Javu. Následující články popisují další způsoby:

Pokud narazíte na problémy související s ověřováním aplikací hostovaným v Azure, přečtěte si téma Řešení potíží s ověřováním aplikací hostovaných v Azure.

Jakmile zvládnete ověřování, přečtěte si téma Konfigurace protokolování v sadě Azure SDK pro Javu , kde najdete informace o funkcích protokolování poskytovaných sadou SDK.