Dela via


Autentisera Azure-värdbaserade Java-program

Den här artikeln beskriver hur Azure Identity-biblioteket stöder Microsoft Entra-tokenautentisering för program som finns i Azure. Det här stödet möjliggörs genom en uppsättning TokenCredential implementeringar som beskrivs i den här artikeln.

Den här artikeln beskriver följande ämnen:

Felsökning av autentiseringsproblem som rör Azure-värdbaserade program finns i Felsöka Azure-värdbaserad programautentisering.

StandardAzureCredential

DefaultAzureCredential kombinerar autentiseringsuppgifter som ofta används för att autentisera när de distribueras, med autentiseringsuppgifter som används för att autentisera i en utvecklingsmiljö. Mer information finns i Översikt över DefaultAzureCredential.

Konfigurera StandardAzureCredential

DefaultAzureCredential stöder en uppsättning konfigurationer via setters på DefaultAzureCredentialBuilder miljövariablerna eller .

  • Om du anger miljövariablerna AZURE_CLIENT_ID, AZURE_CLIENT_SECREToch AZURE_TENANT_ID enligt definitionen i Miljövariabler konfigureras DefaultAzureCredential att autentiseras som tjänstens huvudnamn som anges av värdena.
  • Inställningen .managedIdentityClientId(String) för builder- eller miljövariabeln AZURE_CLIENT_ID konfigureras DefaultAzureCredential för att autentiseras som en användartilldelad hanterad identitet, samtidigt som de lämnas tomma konfigurerar den för att autentiseras som en systemtilldelad hanterad identitet.
  • Inställningen .tenantId(String) för builder- eller miljövariabeln AZURE_TENANT_ID konfigureras DefaultAzureCredential för att autentisera till en specifik klientorganisation för antingen cacheminnet för delad token eller IntelliJ IDEA.
  • Om du anger miljövariabeln AZURE_USERNAME konfigureras DefaultAzureCredential att välja motsvarande cachelagrade token från cacheminnet för delad token.

Autentisera med DefaultAzureCredential

I följande exempel visas autentisera SecretClient från klientbiblioteket azure-security-keyvault-secrets med hjälp av 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();

Autentisera en användartilldelad hanterad identitet med DefaultAzureCredential

I följande exempel visas autentisera SecretClient från klientbiblioteket azure-security-keyvault-secrets med distribuerad DefaultAzureCredential till en Azure-resurs med en användartilldelad hanterad identitet konfigurerad.

/**
 * 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 autentiserar den hanterade identiteten (systemtilldelad eller användartilldelad) för en Azure-resurs. Så om programmet körs i en Azure-resurs som har stöd för hanterad identitet via IDENTITY/MSI, IMDS slutpunkter eller båda, så autentiseras ditt program med den här autentiseringsuppgiften och erbjuder en hemlighetslös autentiseringsupplevelse.

Mer information finns i Vad är hanterade identiteter för Azure-resurser?

Autentisera i Azure med hanterad identitet

I följande exempel visas autentisering SecretClient från klientbiblioteket azure-security-keyvault-secrets med hjälp av ManagedIdentityCredential i en virtuell dator, App Service, Functions-app, Cloud Shell, Service Fabric, Arc eller AKS-miljö i Azure, med systemtilldelad eller användartilldelad hanterad identitet aktiverad.

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

Miljövariabler

Du kan konfigurera DefaultAzureCredential och EnvironmentCredential med miljövariabler. Varje typ av autentisering kräver värden för specifika variabler:

Tjänstens huvudnamn med hemlighet

Variabelnamn Värde
AZURE_CLIENT_ID ID för ett Microsoft Entra-program.
AZURE_TENANT_ID ID för programmets Microsoft Entra-klientorganisation.
AZURE_CLIENT_SECRET En av programmets klienthemligheter.

Tjänstens huvudnamn med certifikat

Variabelnamn Värde
AZURE_CLIENT_ID ID för ett Microsoft Entra-program.
AZURE_TENANT_ID ID för programmets Microsoft Entra-klientorganisation.
AZURE_CLIENT_CERTIFICATE_PATH Sökväg till en PEM-kodad certifikatfil inklusive privat nyckel (utan lösenordsskydd).
AZURE_CLIENT_CERTIFICATE_PASSWORD (valfritt) Lösenord för certifikatfilen, om det finns något.
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN (valfritt) Skicka certifikatkedjan i x5c-huvudet för att stödja ämnesnamn/utfärdarbaserad autentisering.

Användarnamn och lösenord

Variabelnamn Värde
AZURE_CLIENT_ID ID för ett Microsoft Entra-program.
AZURE_TENANT_ID ID för programmets Microsoft Entra-klientorganisation.
AZURE_USERNAME Ett användarnamn (vanligtvis en e-postadress).
AZURE_PASSWORD Det associerade lösenordet för det angivna användarnamnet.

Konfigurationen görs i den här ordningen. Om det till exempel finns både värden för en klienthemlighet och ett certifikat används klienthemligheten.

Nästa steg

I den här artikeln beskrivs autentisering för program som finns i Azure. Den här typen av autentisering är ett av flera sätt som du kan autentisera i Azure SDK för Java. Följande artiklar beskriver andra sätt:

Om du stöter på problem som rör Azure-värdbaserad programautentisering kan du läsa Felsöka Azure-värdbaserad programautentisering.

När du har bemästrat autentiseringen kan du läsa Konfigurera loggning i Azure SDK för Java för information om de loggningsfunktioner som tillhandahålls av SDK:t.