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 und AZURE_TENANT_ID (wie in Umgebungsvariablen definiert) konfiguriert DefaultAzureCredential für die Authentifizierung als durch die Werte angegebenen Dienstprinzipal.
  • Die Einstellung .managedIdentityClientId(String) für den Generator oder die Umgebungsvariable AZURE_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 Umgebungsvariable AZURE_TENANT_ID konfiguriert die Authentifizierung bei einem bestimmten Mandanten für den freigegebenen DefaultAzureCredential Tokencache oder IntelliJ IDEA.
  • Durch das Festlegen der Umgebungsvariablen wird AZURE_USERNAME so konfiguriert DefaultAzureCredential, 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/MSIEndpunkte 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:

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.