Door Azure gehoste Java-toepassingen verifiëren

In dit artikel wordt beschreven hoe de Azure Identity-bibliotheek microsoft Entra-tokenverificatie ondersteunt voor toepassingen die worden gehost in Azure. Deze ondersteuning wordt mogelijk gemaakt via een set TokenCredential implementaties, die in dit artikel worden besproken.

In dit artikel worden de volgende onderwerpen behandeld:

Zie Problemen met azure-gehoste toepassingsverificatie oplossen voor het oplossen van verificatieproblemen met betrekking tot door Azure gehoste toepassingen.

StandaardReferenties voor Azure

DefaultAzureCredential is geschikt voor de meeste scenario's waarin de toepassing uiteindelijk wordt uitgevoerd in de Azure Cloud. DefaultAzureCredential combineert referenties die vaak worden gebruikt voor verificatie bij implementatie, met referenties die worden gebruikt voor verificatie in een ontwikkelomgeving. DefaultAzureCredential probeert te verifiëren via de volgende mechanismen in volgorde:

DefaultAzureCredential authentication flow

  • Omgeving: DefaultAzureCredential leest accountgegevens die zijn opgegeven via omgevingsvariabelen en gebruikt deze om te verifiëren.
  • Beheerde identiteit: als de toepassing wordt geïmplementeerd op een Azure-host waarvoor Beheerde identiteit is ingeschakeld, DefaultAzureCredential verifieert u zich met dat account.
  • IntelliJ: als u bent geverifieerd via Azure Toolkit voor IntelliJ, DefaultAzureCredential wordt dit geverifieerd met dat account.
  • Visual Studio Code: als u bent geverifieerd via de invoegtoepassing Azure-account van Visual Studio Code, DefaultAzureCredential wordt dit geverifieerd met dat account.
  • Azure CLI: als u een account hebt geverifieerd via de Azure CLI-opdracht az login , DefaultAzureCredential wordt dit geverifieerd met dat account.

DefaultAzureCredential configureren

DefaultAzureCredential ondersteunt een set configuraties via setters op de DefaultAzureCredentialBuilder of omgevingsvariabelen.

  • Het instellen van de omgevingsvariabelenAZURE_CLIENT_ID, AZURE_CLIENT_SECRETen AZURE_TENANT_ID zoals gedefinieerd in omgevingsvariabelenDefaultAzureCredential, wordt geconfigureerd om te verifiëren als de service-principal die is opgegeven door de waarden.
  • Als .managedIdentityClientId(String) u de opbouwfunctie of de omgevingsvariabele AZURE_CLIENT_IDDefaultAzureCredential instelt om te verifiëren als een door de gebruiker gedefinieerde beheerde identiteit, terwijl u deze leeg laat, wordt deze geconfigureerd voor verificatie als een door het systeem toegewezen beheerde identiteit.
  • De instelling .tenantId(String) op de opbouwfunctie of de omgevingsvariabele AZURE_TENANT_ID configureert DefaultAzureCredential voor verificatie bij een specifieke tenant voor gedeelde tokencache, Visual Studio Code en IntelliJ IDEA.
  • Als u de omgevingsvariabele AZURE_USERNAME instelt, configureert DefaultAzureCredential u het bijbehorende token in de cache in de cache voor het gedeelde token.
  • De instelling .intelliJKeePassDatabasePath(String) op de opbouwfunctie configureert DefaultAzureCredential om een specifiek KeePass-bestand te lezen bij het verifiëren met IntelliJ-referenties.

Verifiëren met DefaultAzureCredential

In het volgende voorbeeld ziet u hoe u de SecretClientclientbibliotheek azure-security-keyvault-secrets kunt verifiëren met behulp van 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();

Een door de gebruiker toegewezen beheerde identiteit verifiëren met DefaultAzureCredential

In het volgende voorbeeld ziet u hoe u de SecretClient verificatie vanuit de clientbibliotheek azure-security-keyvault-secrets gebruikt die is DefaultAzureCredential geïmplementeerd in een Azure-resource met een door de gebruiker toegewezen beheerde identiteit geconfigureerd.

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

Een gebruiker verifiëren in Azure Toolkit voor IntelliJ met DefaultAzureCredential

In het volgende voorbeeld ziet u hoe u de SecretClient clientbibliotheek azure-security-keyvault-secrets gebruikt op DefaultAzureCredentialeen werkstation waarop IntelliJ IDEA is geïnstalleerd en dat de gebruiker zich heeft aangemeld met een Azure-account bij de Azure-toolkit voor IntelliJ.

Zie Sign in Azure Toolkit for IntelliJ for IntelliJ for IntelliJcredential voor meer informatie over het configureren van uw IntelliJ IDEA.

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

Referenties voor beheerde identiteit

De beheerde identiteit verifieert de beheerde identiteit (door het systeem of de gebruiker toegewezen) van een Azure-resource. Dus als de toepassing wordt uitgevoerd in een Azure-resource die beheerde identiteit ondersteunt via IDENTITY/MSI, IMDS eindpunten of beide, wordt met deze referentie uw toepassing geverifieerd en wordt een geweldige ervaring met geheimloze verificatie geboden.

Zie Wat zijn beheerde identiteiten voor Azure-resources? voor meer informatie.

Verifiëren in Azure met beheerde identiteit

In het volgende voorbeeld ziet u hoe u de SecretClient verificatie uitvoert vanuit de clientbibliotheek azure-security-keyvault-secrets met behulp van de ManagedIdentityCredential in een virtuele machine, app serviceservice, functie-app, Cloud Shell, service fabric, arc of AKS-omgeving in Azure, waarvoor door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit is ingeschakeld.

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

Omgevingsvariabelen

U kunt omgevingsvariabelen configureren DefaultAzureCredential en EnvironmentCredential gebruiken. Voor elk type verificatie zijn waarden vereist voor specifieke variabelen:

Service-principal met geheim

Naam van de variabele Weergegeven als
AZURE_CLIENT_ID Id van een Microsoft Entra-toepassing.
AZURE_TENANT_ID Id van de Microsoft Entra-tenant van de toepassing.
AZURE_CLIENT_SECRET Een van de clientgeheimen van de toepassing.

Service-principal met certificaat

Naam van de variabele Weergegeven als
AZURE_CLIENT_ID Id van een Microsoft Entra-toepassing.
AZURE_TENANT_ID Id van de Microsoft Entra-tenant van de toepassing.
AZURE_CLIENT_CERTIFICATE_PATH Pad naar een MET PEM gecodeerd certificaatbestand, inclusief een persoonlijke sleutel (zonder wachtwoordbeveiliging).

Gebruikersnaam en wachtwoord

Naam van de variabele Weergegeven als
AZURE_CLIENT_ID Id van een Microsoft Entra-toepassing.
AZURE_USERNAME Een gebruikersnaam (meestal een e-mailadres).
AZURE_PASSWORD Het bijbehorende wachtwoord voor de opgegeven gebruikersnaam.

De configuratie wordt in deze volgorde uitgevoerd. Als er bijvoorbeeld waarden voor een clientgeheim en certificaat aanwezig zijn, wordt het clientgeheim gebruikt.

Volgende stappen

Dit artikel heeft betrekking op verificatie voor toepassingen die worden gehost in Azure. Deze vorm van verificatie is een van de verschillende manieren waarop u zich kunt verifiëren in de Azure SDK voor Java. In de volgende artikelen worden andere manieren beschreven:

Als u problemen ondervindt met betrekking tot door Azure gehoste toepassingsverificatie, raadpleegt u Problemen met door Azure gehoste toepassingsverificatie oplossen.

Nadat u de verificatie hebt beheerd, raadpleegt u Logboekregistratie configureren in de Azure SDK voor Java voor informatie over de functionaliteit voor logboekregistratie die door de SDK wordt geboden.