Authentifizieren von in Azure gehosteten Java-Anwendungen
In diesem Artikel wird erläutert, wie die Azure Identity-Bibliothek die Microsoft Entra-Tokenauthentifizierung für Anwendungen unterstützt, die in Azure gehostet werden. 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
eignet sich für die meisten Szenarien, 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 zu authentifizieren:
- Umgebung –
DefaultAzureCredential
liest Kontoinformationen, die über Umgebungsvariablen angegeben wurden, und verwendet sie zur Authentifizierung. - Verwaltete Identität – Wenn die Anwendung auf einem Azure-Host mit aktivierter verwalteter Identität bereitgestellt wird,
DefaultAzureCredential
authentifiziert sie sich mit diesem Konto. - IntelliJ – Wenn Sie sich über das Azure Toolkit für IntelliJ authentifiziert haben,
DefaultAzureCredential
authentifiziert sie sich mit diesem Konto. - Visual Studio Code – Wenn Sie sich über das Visual Studio Code Azure-Konto-Plug-In authentifiziert haben,
DefaultAzureCredential
authentifiziert sich das Konto. - Azure CLI – Wenn Sie ein Konto über den Azure CLI-Befehl
az login
authentifiziert haben,DefaultAzureCredential
authentifiziert sie sich mit diesem Konto.
Konfigurieren von DefaultAzureCredential
DefaultAzureCredential
unterstützt eine Reihe von Konfigurationen durch Setter für DefaultAzureCredentialBuilder
oder Umgebungsvariablen.
- Durch Festlegen der Umgebungsvariablen
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
undAZURE_TENANT_ID
gemäß der Definition in Umgebungsvariablen wirdDefaultAzureCredential
die Authentifizierung als dienstprinzipal konfiguriert, der durch die Werte angegeben wird. - Die Einstellung
.managedIdentityClientId(String)
für den Generator oder die UmgebungsvariableAZURE_CLIENT_ID
DefaultAzureCredential
konfiguriert die Authentifizierung als benutzerdefinierte verwaltete Identität, während sie leer bleibt, wird sie so konfiguriert, dass sie als vom System zugewiesene verwaltete Identität authentifiziert wird. - Die Einstellung
.tenantId(String)
für den Generator oder die UmgebungsvariableAZURE_TENANT_ID
konfiguriert die Authentifizierung bei einem bestimmten Mandanten für den freigegebenenDefaultAzureCredential
Tokencache, Visual Studio Code und IntelliJ IDEA. - Durch Festlegen der Umgebungsvariable
AZURE_USERNAME
wirdDefaultAzureCredential
konfiguriert, dass das entsprechende zwischengespeicherte Token aus dem freigegebenen Tokencache ausgewählt wird. - Die Einstellung
.intelliJKeePassDatabasePath(String)
für den Generator konfiguriertDefaultAzureCredential
das Lesen einer bestimmten KeePass-Datei beim Authentifizieren mit IntelliJ-Anmeldeinformationen.
Authentifizieren mit DefaultAzureCredential
Im folgenden Beispiel wird die SecretClient
Authentifizierung aus der clientbibliothek mit azure-security-keyvault-secrets veranschaulichtDefaultAzureCredential
.
// 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
Das folgende Beispiel veranschaulicht die SecretClient
Authentifizierung der clientbibliothek mit azure-security-keyvault-secrets mithilfe DefaultAzureCredential
der Bereitstellung in einer Azure-Ressource mit einer vom Benutzer zugewiesenen verwalteten Identität.
/**
* 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 die Authentifizierung SecretClient
aus der clientbibliothek mit azure-security-keyvault-secrets veranschaulichtDefaultAzureCredential
, auf einer Arbeitsstation, auf der IntelliJ IDEA installiert ist, und der Benutzer hat sich mit einem Azure-Konto beim Azure Toolkit für IntelliJ angemeldet.
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 in einer Azure-Ressource ausgeführt wird, die verwaltete Identität über IDENTITY/MSI
Endpunkte IMDS
oder beides unterstützt, erhält diese Anmeldeinformationen Ihre Anwendung authentifiziert und bietet eine großartige, geheime Authentifizierung.
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 Probleme im Zusammenhang mit der azure-gehosteten Anwendungsauthentifizierung auftreten, lesen Sie die 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.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für