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.
Credenziali di Azure predefinite
DefaultAzureCredential
è appropriato per la maggior parte degli scenari in cui l'applicazione viene eseguita in definitiva nel cloud di Azure. DefaultAzureCredential
combina le credenziali comunemente usate per l'autenticazione durante la distribuzione, con le credenziali usate per l'autenticazione in un ambiente di sviluppo. DefaultAzureCredential
tenta di eseguire l'autenticazione tramite i meccanismi seguenti in ordine:
- Ambiente:
DefaultAzureCredential
legge le informazioni sull'account specificate tramite le variabili di ambiente e usarle per l'autenticazione. - Identità gestita: se l'applicazione viene distribuita in un host di Azure con identità gestita abilitata,
DefaultAzureCredential
esegue l'autenticazione con tale account. - IntelliJ: se è stata eseguita l'autenticazione tramite Azure Toolkit for IntelliJ,
DefaultAzureCredential
esegue l'autenticazione con tale account. - Visual Studio Code: se è stata eseguita l'autenticazione tramite il plug-in account azure di Visual Studio Code,
DefaultAzureCredential
esegue l'autenticazione con tale account. - Interfaccia della riga di comando di Azure: se è stato autenticato un account tramite il comando dell'interfaccia della riga di comando di Azure
az login
,DefaultAzureCredential
esegue l'autenticazione con tale account.
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 definita dall'utente, lasciandole vuote le configura per l'autenticazione come identità gestita assegnata dal sistema. - L'impostazione
.tenantId(String)
nel generatore o nella variabileAZURE_TENANT_ID
di ambiente viene configurataDefaultAzureCredential
per l'autenticazione in un tenant specifico per la cache dei token condivisi, Visual Studio Code e IntelliJ IDEA. - L'impostazione della variabile di ambiente consente di
DefaultAzureCredential
selezionareAZURE_USERNAME
il token memorizzato nella cache dei token condivisi corrispondente. - L'impostazione
.intelliJKeePassDatabasePath(String)
nel generatore viene configurataDefaultAzureCredential
per leggere un file KeePass specifico durante l'autenticazione con le credenziali di IntelliJ.
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://<your 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.
/**
* 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();
Autenticare un utente in Azure Toolkit for IntelliJ con DefaultAzureCredential
L'esempio seguente illustra l'autenticazione SecretClient
dalla libreria client azure-security-keyvault-secrets usando DefaultAzureCredential
, in una workstation in cui è installato IntelliJ IDEA e l'utente ha eseguito l'accesso con un account Azure al Toolkit di Azure per IntelliJ.
Per altre informazioni sulla configurazione di IntelliJ IDEA, vedere Accedere ad Azure Toolkit for IntelliJ for 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();
Credenziali dell'identità gestita
L'identità gestita autentica l'identità gestita (assegnata dal sistema o 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 ottimale.
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, un servizio app, un'app per le funzioni, Cloud Shell, Service Fabric, arc o un ambiente del servizio Azure Kubernetes in Azure, con l'identità gestita assegnata dal sistema o assegnata dall'utente abilitata.
/**
* 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();
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). |
Nome utente e password
Nome variabile | Valore |
---|---|
AZURE_CLIENT_ID |
ID di un'applicazione Microsoft Entra. |
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.