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.
DefaultAzureCredential
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. Weitere Informationen finden Sie unter DefaultAzureCredential (Übersicht).
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. - Die Einstellung
.managedIdentityClientId(String)
für den Generator oder die UmgebungsvariableAZURE_CLIENT_ID
DefaultAzureCredential
konfiguriert die Authentifizierung als vom Benutzer zugewiesene 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 oder IntelliJ IDEA. - Durch das Festlegen der Umgebungsvariablen wird
AZURE_USERNAME
so konfiguriertDefaultAzureCredential
, dass das entsprechende zwischengespeicherte Token aus dem freigegebenen Tokencache ausgewählt wird.
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://<KEY_VAULT_NAME>.vault.azure.net")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
Authentifizieren einer vom Benutzer 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.
/**
* 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 authentifiziert die verwaltete Identität (vom System zugewiesen oder vom Benutzer 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 geheime Authentifizierung.
Weitere Informationen finden Sie unter Was sind verwaltete Identitäten für Azure-Ressourcen?.
Authentifizierung in Azure mit verwalteter Identität
Im folgenden Beispiel wird die Authentifizierung SecretClient
aus der clientbibliothek mit azure-security-keyvault-secrets mithilfe der ManagedIdentityCredential
in einer Virtual Machine, App Service, Functions-App, Cloud Shell, Service Fabric, Arc oder AKS-Umgebung in Azure veranschaulicht, wobei die vom System zugewiesene oder vom Benutzer zugewiesene verwaltete Identität aktiviert ist.
/**
* 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();
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). |
AZURE_CLIENT_CERTIFICATE_PASSWORD |
(optional) Kennwort der Zertifikatdatei, falls vorhanden. |
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN |
(optional) Senden Sie die Zertifikatkette im x5c-Header, um den Antragstellernamen/die ausstellerbasierte Authentifizierung zu unterstützen. |
Benutzername und Kennwort
Variablenname | Wert |
---|---|
AZURE_CLIENT_ID |
ID einer Microsoft Entra-Anwendung. |
AZURE_TENANT_ID |
ID des Microsoft Entra-Mandanten der 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.