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.
Standardautentiseringsuppgifter för Azure
DefaultAzureCredential
är lämpligt för de flesta scenarier där programmet slutligen körs i Azure Cloud. 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ö. DefaultAzureCredential
försök att autentisera via följande mekanismer i ordning:
- Miljö –
DefaultAzureCredential
läser kontoinformation som anges via miljövariabler och använder den för att autentisera. - Hanterad identitet – Om programmet distribueras till en Azure-värd med hanterad identitet aktiverad autentiserar
DefaultAzureCredential
med det kontot. - IntelliJ – Om du har autentiserat via Azure Toolkit for IntelliJ autentiserar
DefaultAzureCredential
du med det kontot. - Visual Studio Code – Om du har autentiserats via plugin-programmet
DefaultAzureCredential
Visual Studio Code Azure-konto autentiserar du med det kontot. - Azure CLI – Om du har autentiserat ett konto via Azure CLI-kommandot
az login
DefaultAzureCredential
autentiserar du med det kontot.
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_SECRET
ochAZURE_TENANT_ID
enligt definitionen i Miljövariabler konfigurerasDefaultAzureCredential
att autentiseras som tjänstens huvudnamn som anges av värdena. - Inställningen
.managedIdentityClientId(String)
för builder- eller miljövariabelnAZURE_CLIENT_ID
konfigurerasDefaultAzureCredential
för att autentiseras som en användardefinierad 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övariabelnAZURE_TENANT_ID
konfigurerasDefaultAzureCredential
för att autentisera till en specifik klient för delad tokencache, Visual Studio Code och IntelliJ IDEA. - Om du anger miljövariabeln
AZURE_USERNAME
konfigurerasDefaultAzureCredential
att välja motsvarande cachelagrade token från cacheminnet för delad token. - Inställningen
.intelliJKeePassDatabasePath(String)
på byggaren konfigurerasDefaultAzureCredential
för att läsa en specifik KeePass-fil när du autentiserar med IntelliJ-autentiseringsuppgifter.
Autentisera med DefaultAzureCredential
I följande exempel visas hur du autentiserar SecretClient
från klientbiblioteket azure-security-keyvault-secrets med .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();
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.
/**
* 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();
Autentisera en användare i Azure Toolkit for IntelliJ med DefaultAzureCredential
I följande exempel visas autentisera SecretClient
från klientbiblioteket azure-security-keyvault-secrets med hjälp av DefaultAzureCredential
, på en arbetsstation där IntelliJ IDEA är installerat och användaren har loggat in med ett Azure-konto till Azure Toolkit for IntelliJ.
Mer information om hur du konfigurerar din IntelliJ IDEA finns i Logga in 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();
Autentiseringsuppgifter för hanterad identitet
Den hanterade identiteten autentiserar den hanterade identiteten (system eller tilldelad användare) för en Azure-resurs. Så om programmet körs i en Azure-resurs som stöder hanterad identitet via IDENTITY/MSI
, IMDS
slutpunkter eller båda, så autentiseras ditt program med den här autentiseringsuppgiften och ger en bra 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, apptjänst, funktionsapp, Cloud Shell, tjänstinfrastruktur, båge eller AKS-miljö i Azure, med systemtilldelad eller användartilldelad hanterad identitet aktiverad.
/**
* 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();
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). |
Användarnamn och lösenord
Variabelnamn | Värde |
---|---|
AZURE_CLIENT_ID |
ID för ett Microsoft Entra-program. |
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:
- Azure-autentisering i utvecklingsmiljöer
- Autentisering med tjänstens huvudnamn
- Autentisering med användarautentiseringsuppgifter
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.