Freigeben über


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:

Authentifizierungsflow mit DefaultAzureCredential

  • 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ührt DefaultAzureCredential 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 und AZURE_TENANT_ID (wie in Umgebungsvariablen definiert) konfiguriert DefaultAzureCredential für die Authentifizierung als durch die Werte angegebenen Dienstprinzipal.
  • Wenn Sie .managedIdentityClientId(String) für den Generator oder die Umgebungsvariable AZURE_CLIENT_ID festlegen, wird DefaultAzureCredential 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 Umgebungsvariable AZURE_TENANT_ID festlegen, wird DefaultAzureCredential 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 konfiguriert DefaultAzureCredential, dass das entsprechende zwischengespeicherte Token aus dem freigegebenen Tokencache ausgewählt wird.
  • Wenn Sie .intelliJKeePassDatabasePath(String) für den Generator festlegen, wird DefaultAzureCredential 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:

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.