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.

Výchozí přihlašovací údaje Azure

DefaultAzureCredential je vhodný pro většinu scénářů, ve kterých aplikace nakonec běží v cloudu Azure. 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í. DefaultAzureCredential se pokouší ověřit prostřednictvím následujících mechanismů v pořadí:

DefaultAzureCredential authentication flow

  • Prostředí – DefaultAzureCredential čte informace o účtu zadané prostřednictvím proměnných prostředí a používá je k ověření.
  • Spravovaná identita – Pokud se aplikace nasadí na hostitele Azure s povolenou spravovanou identitou, DefaultAzureCredential ověří se pomocí daného účtu.
  • IntelliJ – Pokud jste se ověřili prostřednictvím sady Azure Toolkit for IntelliJ, DefaultAzureCredential ověřuje se pomocí daného účtu.
  • Visual Studio Code – Pokud jste se ověřili prostřednictvím modulu plug-in Azure Account editoru Visual Studio Code, DefaultAzureCredential ověří se u daného účtu.
  • Azure CLI – Pokud jste účet ověřili pomocí příkazu Azure CLI az login , DefaultAzureCredential ověří se u daného účtu.

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) tvůrce nebo proměnné AZURE_CLIENT_ID prostředí se konfiguruje DefaultAzureCredential tak, aby se ověřilo jako uživatelem definovaná spravovaná identita, a přitom 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í konfiguruje DefaultAzureCredential ověření pro konkrétního tenanta pro mezipaměť sdílených tokenů, Visual Studio Code a 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.
  • Nastavení .intelliJKeePassDatabasePath(String) v tvůrci konfiguruje DefaultAzureCredential čtení konkrétního souboru KeePass při ověřování pomocí přihlašovacích údajů IntelliJ.

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://<your 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.

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

Ověření uživatele v sadě Azure Toolkit for IntelliJ pomocí defaultAzureCredential

Následující příklad ukazuje ověření SecretClient z klientské knihovny azure-security-keyvault-secrets pomocí DefaultAzureCredential, na pracovní stanici, kde je nainstalovaná IntelliJ IDEA, a uživatel se přihlásil pomocí účtu Azure k sadě Azure Toolkit for IntelliJ.

Další informace o konfiguraci IntelliJ IDEA najdete v tématu Přihlášení k sadě Azure Toolkit for IntelliJ pro 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();

Přihlašovací údaje spravované identity

Spravovaná identita ověřuje spravovanou identitu (systém nebo přiřazený 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í skvělé 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 funkcí, Cloud Shellu, service fabric, arc nebo prostředí AKS v Azure s povolenou spravovanou identitou přiřazenou systémem nebo uživatelem.

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

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)

Uživatelské jméno a heslo

Název proměnné Hodnota
AZURE_CLIENT_ID ID aplikace Microsoft Entra.
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.