Autenticare le applicazioni Java ospitate in Azure

Questo articolo illustra in che modo la libreria di identità di Azure supporta l'autenticazione del token Microsoft Entra per le applicazioni ospitate in Azure. Questo supporto è reso possibile tramite un set di TokenCredential implementazioni, descritte in questo articolo.

Questo articolo illustra gli argomenti seguenti:

Per la risoluzione dei problemi di autenticazione relativi alle applicazioni ospitate in Azure, vedere Risolvere i problemi di autenticazione dell'applicazione ospitata in Azure.

DefaultAzureCredential

DefaultAzureCredential combina le credenziali comunemente usate per l'autenticazione durante la distribuzione, con le credenziali usate per l'autenticazione in un ambiente di sviluppo. Per altre informazioni, vedere Panoramica di DefaultAzureCredential.

Configurare DefaultAzureCredential

DefaultAzureCredential supporta un set di configurazioni tramite setter nelle variabili di DefaultAzureCredentialBuilder ambiente o .

  • L'impostazione delle variabili AZURE_CLIENT_IDdi ambiente , AZURE_CLIENT_SECRETe AZURE_TENANT_ID come definito in Variabili di ambiente configura DefaultAzureCredential per l'autenticazione come entità servizio specificata dai valori .
  • L'impostazione .managedIdentityClientId(String) nel generatore o nella variabile AZURE_CLIENT_ID di ambiente consente DefaultAzureCredential di eseguire l'autenticazione come identità gestita assegnata dall'utente, lasciandola vuota, la configura per l'autenticazione come identità gestita assegnata dal sistema.
  • L'impostazione .tenantId(String) nel generatore o nella variabile AZURE_TENANT_ID di ambiente consente DefaultAzureCredential di eseguire l'autenticazione in un tenant specifico per la cache dei token condivisi o IntelliJ IDEA.
  • L'impostazione della variabile di ambiente consente di DefaultAzureCredential selezionare AZURE_USERNAME il token memorizzato nella cache dei token condivisi corrispondente.

Eseguire l'autenticazione con DefaultAzureCredential

L'esempio seguente illustra l'autenticazione SecretClient dalla libreria client azure-security-keyvault-secrets usando 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();

Autenticare un'identità gestita assegnata dall'utente con DefaultAzureCredential

L'esempio seguente illustra l'autenticazione SecretClient dalla libreria client azure-security-keyvault-secrets usando DefaultAzureCredential distribuita in una risorsa di Azure con un'identità gestita assegnata dall'utente configurata.

/**
 * 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 autentica l'identità gestita (assegnata dal sistema o assegnata dall'utente) di una risorsa di Azure. Pertanto, se l'applicazione è in esecuzione all'interno di una risorsa di Azure che supporta l'identità gestita tramite IDENTITY/MSI, IMDS endpoint o entrambi, questa credenziale ottiene l'applicazione autenticata e offre un'esperienza di autenticazione senza segreti.

Per altre informazioni, vedere Cosa sono le identità gestite per le risorse di Azure.

Eseguire l'autenticazione in Azure con identità gestita

L'esempio seguente illustra l'autenticazione dall'ambiente SecretClient client azure-security-keyvault-secrets usando ManagedIdentityCredential in una macchina virtuale, servizio app, un'app per le funzioni, Cloud Shell, Service Fabric, Arc o servizio Azure Kubernetes in Azure, con l'identità gestita assegnata dal sistema o assegnata dall'utente abilitata.

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

Variabili di ambiente

È possibile configurare DefaultAzureCredential e EnvironmentCredential con le variabili di ambiente. Ogni tipo di autenticazione richiede i valori per le variabili specifiche:

Entità servizio con segreto

Nome variabile Valore
AZURE_CLIENT_ID ID di un'applicazione Microsoft Entra.
AZURE_TENANT_ID ID del tenant Microsoft Entra dell'applicazione.
AZURE_CLIENT_SECRET Uno dei segreti client dell'applicazione.

Entità servizio con certificato

Nome variabile Valore
AZURE_CLIENT_ID ID di un'applicazione Microsoft Entra.
AZURE_TENANT_ID ID del tenant Microsoft Entra dell'applicazione.
AZURE_CLIENT_CERTIFICATE_PATH Percorso di un file di certificato con codifica PEM, inclusa la chiave privata (senza protezione password).
AZURE_CLIENT_CERTIFICATE_PASSWORD (facoltativo) Password del file del certificato, se presente.
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN (facoltativo) Inviare la catena di certificati nell'intestazione x5c per supportare l'autenticazione basata su nome soggetto/autorità di certificazione.

Nome utente e password

Nome variabile Valore
AZURE_CLIENT_ID ID di un'applicazione Microsoft Entra.
AZURE_TENANT_ID ID del tenant Microsoft Entra dell'applicazione.
AZURE_USERNAME Un nome utente (in genere un indirizzo di posta elettronica).
AZURE_PASSWORD Password associata per il nome utente specificato.

La configurazione viene tentata in questo ordine. Ad esempio, se i valori per un segreto client e un certificato sono entrambi presenti, viene usato il segreto client.

Passaggi successivi

Questo articolo ha illustrato l'autenticazione per le applicazioni ospitate in Azure. Questa forma di autenticazione è uno dei diversi modi in cui è possibile eseguire l'autenticazione in Azure SDK per Java. Gli articoli seguenti descrivono altri modi:

Se si verificano problemi relativi all'autenticazione dell'applicazione ospitata in Azure, vedere Risolvere i problemi di autenticazione dell'applicazione ospitata in Azure.

Dopo aver eseguito l'autenticazione master, vedere Configurare la registrazione in Azure SDK per Java per informazioni sulle funzionalità di registrazione fornite dall'SDK.