Authentifizieren von in Azure gehosteten Java-Anwendungen
In diesem Artikel wird erläutert, wie die Azure-Identitätsbibliothek Microsoft Entra-Tokenauthentifizierung für in Azure gehostete Anwendungen unterstützt. Diese Unterstützung wird durch eine Reihe von TokenCredential
-Implementierungen ermöglicht, die in diesem Artikel erläutert werden.
In diesem Artikel werden die folgenden Themen behandelt:
Informationen zur Problembehandlung von Authentifizierungsproblemen im Zusammenhang mit von Azure gehosteten Anwendungen finden Sie unter Problembehandlung bei der Azure-gehosteten Anwendungsauthentifizierung.
Azure-Standardanmeldeinformationen
DefaultAzureCredential
ist für die meisten Szenarien geeignet, in denen die Anwendung letztendlich in der Azure-Cloud ausgeführt wird. DefaultAzureCredential
kombiniert Anmeldeinformationen, die bei der Bereitstellung häufig zum Authentifizieren verwendet werden, mit Anmeldeinformationen, die für die Authentifizierung in einer Entwicklungsumgebung verwendet werden. DefaultAzureCredential
versucht, sich über die folgenden Mechanismen in der angegebenen Reihenfolge zu authentifizieren:
- Umgebung –
DefaultAzureCredential
liest Kontoinformationen, die mit Umgebungsvariablen angegeben werden, und nutzt diese zur Authentifizierung. - Verwaltete Identität – Wenn die Anwendung auf einem Azure-Host mit aktivierter verwalteter Identität bereitgestellt wird, führt
DefaultAzureCredential
die Authentifizierung mit diesem Konto aus. - IntelliJ – Wenn Sie sich über das Azure-Toolkit für IntelliJ authentifiziert haben, führt
DefaultAzureCredential
die Authentifizierung mit diesem Konto aus. - Visual Studio Code – Wenn Sie sich über das Plug-In für das Visual Studio Code Azure-Konto authentifiziert haben, führt
DefaultAzureCredential
die Authentifizierung mit diesem Konto aus. - Azure CLI – Wenn Sie ein Konto über den Azure CLI-Befehl
az login
authentifiziert haben, führtDefaultAzureCredential
die Authentifizierung mit diesem Konto aus.
Konfigurieren von DefaultAzureCredential
DefaultAzureCredential
unterstützt eine Reihe von Konfigurationen durch Setter für DefaultAzureCredentialBuilder
oder Umgebungsvariablen.
- Das Festlegen der Umgebungsvariablen
AZURE_CLIENT_ID
,AZURE_CLIENT_SECRET
undAZURE_TENANT_ID
(wie in Umgebungsvariablen definiert) konfiguriertDefaultAzureCredential
für die Authentifizierung als durch die Werte angegebenen Dienstprinzipal. - Wenn Sie
.managedIdentityClientId(String)
für den Generator oder die UmgebungsvariableAZURE_CLIENT_ID
festlegen, wirdDefaultAzureCredential
für die Authentifizierung als benutzerdefinierte verwaltete Identität konfiguriert. Wenn keine Werte angegeben werden, wird die Authentifizierung als vom System zugewiesene verwaltete Identität konfiguriert. - Wenn Sie
.tenantId(String)
für den Generator oder die UmgebungsvariableAZURE_TENANT_ID
festlegen, wirdDefaultAzureCredential
für die Authentifizierung bei einem bestimmten Mandanten für den freigegebenen Tokencache, Visual Studio Code und IntelliJ IDEA konfiguriert. - Durch das Festlegen der Umgebungsvariablen wird
AZURE_USERNAME
so konfiguriertDefaultAzureCredential
, dass das entsprechende zwischengespeicherte Token aus dem freigegebenen Tokencache ausgewählt wird. - Wenn Sie
.intelliJKeePassDatabasePath(String)
für den Generator festlegen, wirdDefaultAzureCredential
für das Lesen einer bestimmten KeePass-Datei bei der Authentifizierung mit IntelliJ-Anmeldeinformationen konfiguriert.
Authentifizieren mit DefaultAzureCredential
Im folgenden Beispiel wird gezeigt, wie SecretClient
von der azure-security-keyvault-secrets-Clientbibliothek mithilfe von DefaultAzureCredential
authentifiziert wird.
// 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();
Authentifizieren einer benutzerseitig zugewiesenen verwalteten Identität mit DefaultAzureCredential
Im folgenden Beispiel wird die Authentifizierung SecretClient
der Clientbibliothek aus der azure-security-keyvault-secrets-ClientbibliothekDefaultAzureCredential
mithilfe der Bereitstellung in einer Azure-Ressource veranschaulicht, für die eine benutzerseitig zugewiesene verwaltete Identität konfiguriert ist.
/**
* 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();
Authentifizieren eines Benutzers in Azure-Toolkit für IntelliJ mit DefaultAzureCredential
Im folgenden Beispiel wird gezeigt, wie SecretClient
von der azure-security-keyvault-secrets-Clientbibliothek mithilfe von DefaultAzureCredential
auf einer Arbeitsstation authentifiziert wird, auf der IntelliJ IDEA installiert und die Anmeldung des Benutzers beim Azure-Toolkit für IntelliJ mit einem Azure-Konto erfolgt ist.
Weitere Informationen zum Konfigurieren von IntelliJ IDEA finden Sie unter Anmelden beim Azure-Toolkit für IntelliJ für 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();
Anmeldeinformationen für verwaltete Identität
Die verwaltete Identität authentifiziert die verwaltete Identität (system- oder benutzerseitig zugewiesen) einer Azure-Ressource. Wenn die Anwendung also innerhalb einer Azure-Ressource ausgeführt wird, die verwaltete Identität über den IDENTITY/MSI
- bzw. IMDS
-Endpunkt oder beide Endpunkte unterstützt, authentifizieren diese Anmeldeinformationen Ihre Anwendung und bietet eine großartige Authentifizierungserfahrung ohne Geheimnisse.
Weitere Informationen finden Sie unter Was sind verwaltete Identitäten für Azure-Ressourcen?.
Authentifizierung in Azure mit verwalteter Identität
Das folgende Beispiel zeigt die Authentifizierung von SecretClient
aus der azure-security-keyvault-secrets-Clieentbibliothek mit ManagedIdentityCredential
mit einem virtuellen Computer, einem App-Dienst, einer Funktions-App, mit Cloud Shell oder einer Service Fabric, arc- oder AKS-Umgebung in Azure, wobei die system- oder benutzerseitig zugewiesene verwaltete Identität aktiviert ist.
/**
* 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();
Umgebungsvariablen
Sie können DefaultAzureCredential
und EnvironmentCredential
mit Umgebungsvariablen konfigurieren. Jeder Authentifizierungstyp erfordert Werte für bestimmte Variablen:
Dienstprinzipal mit Geheimnis
Variablenname | Wert |
---|---|
AZURE_CLIENT_ID |
ID einer Microsoft Entra-Anwendung. |
AZURE_TENANT_ID |
ID des Microsoft Entra-Mandanten der Anwendung. |
AZURE_CLIENT_SECRET |
Eines der Clientgeheimnisse der Anwendung. |
Dienstprinzipal mit Zertifikat
Variablenname | Wert |
---|---|
AZURE_CLIENT_ID |
ID einer Microsoft Entra-Anwendung. |
AZURE_TENANT_ID |
ID des Microsoft Entra-Mandanten der Anwendung. |
AZURE_CLIENT_CERTIFICATE_PATH |
Pfad zu einer PEM-codierten Zertifikatdatei einschließlich privatem Schlüssel (ohne Kennwortschutz). |
Benutzername und Kennwort
Variablenname | Wert |
---|---|
AZURE_CLIENT_ID |
ID einer Microsoft Entra-Anwendung. |
AZURE_USERNAME |
Einen Benutzername (normalerweise eine E-Mail-Adresse). |
AZURE_PASSWORD |
Das zugehörige Kennwort für den angegebenen Benutzernamen. |
Die Konfiguration wird in dieser Reihenfolge versucht. Wenn zum Beispiel sowohl Werte für ein Clientgeheimnis als auch für ein Zertifikat vorhanden sind, wird das Clientgeheimnis verwendet.
Nächste Schritte
In diesem Artikel wurde Authentifizierung für in Azure gehostete Anwendungen behandelt. Diese Form von Authentifizierung ist eine von mehreren Methoden, die Sie im Azure SDK für Java für die Authentifizierung verwenden können. In den folgenden Artikeln werden weitere Möglichkeiten beschrieben:
- Azure-Authentifizierung in Entwicklungsumgebungen
- Authentifizierung mit Dienstprinzipalen
- Authentifizierung mit Benutzeranmeldeinformationen
Wenn Sie Probleme im Zusammenhang mit der Authentifizierung von in Azure gehosteten Anwendungen haben, siehe Problembehandlung bei der Azure-gehosteten Anwendungsauthentifizierung.
Wenn Sie die Authentifizierung gemeistert haben, finden Sie unter Konfigurieren der Protokollierung im Azure SDK für Java weitere Informationen zur Protokollierungsfunktionalität, die vom SDK bereitgestellt wird.