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_ID
di ambiente ,AZURE_CLIENT_SECRET
eAZURE_TENANT_ID
come definito in Variabili di ambiente configuraDefaultAzureCredential
per l'autenticazione come entità servizio specificata dai valori . - L'impostazione
.managedIdentityClientId(String)
nel generatore o nella variabileAZURE_CLIENT_ID
di ambiente consenteDefaultAzureCredential
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 variabileAZURE_TENANT_ID
di ambiente consenteDefaultAzureCredential
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
selezionareAZURE_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:
- Autenticazione di Azure negli ambienti di sviluppo
- Autenticazione con entità servizio
- Autenticazione con credenziali utente
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.