Azure-Authentifizierung mit Java und Azure Identity
Dieser Artikel bietet eine Übersicht über die Java Azure Identity-Bibliothek, die Unterstützung für Microsoft Entra-Tokenauthentifizierung über das Azure SDK für Java bereitstellt. Diese Bibliothek bietet eine Reihe von TokenCredential
-Implementierungen, die zum Erstellen von Azure SDK-Clients zur Unterstützung von Microsoft Entra-Tokenauthentifizierung verwendet werden können.
Die Azure-Identitätsbibliothek unterstützt derzeit Folgendes:
- Azure-Authentifizierung in Java-Entwicklungsumgebungen, die Folgendes ermöglicht:
- IDEA IntelliJ-Authentifizierung mit den Anmeldeinformationen, die aus dem Azure-Toolkit für IntelliJ abgerufen werden.
- Visual Studio Code-Authentifizierung mit den Anmeldeinformationen, die im Azure-Plug-In für Visual Studio Code gespeichert werden.
- Azure CLI-Authentifizierung, bei der die Anmeldeinformationen in der Azure CLI gespeichert werden.
- Authentifizierung von in Azure gehosteten Anwendungen, die Folgendes ermöglicht:
- Azure-Standardauthentifizierung mit Anmeldeinformationen
- Authentifizierung der verwalteten Identität
- Authentifizierung mit Dienstprinzipalen, die Folgendes ermöglicht:
- Authentifizierung mit Clientgeheimnis
- Client Certificate Authentication
- Authentifizierung mit Benutzeranmeldeinformationen, die Folgendes ermöglicht:
- Interaktive Browserauthentifizierung
- Gerätecodeauthentifizierung
- Authentifizierung mit Benutzername/Kennwort
Folgen Sie den aufgeführten Links, um mehr über die Besonderheiten der einzelnen Authentifizierungsansätze zu erfahren. Im weiteren Verlauf dieses Artikels stellen wir die häufig verwendeten DefaultAzureCredential
und verwandte Themen vor.
Hinzufügen von Maven-Abhängigkeiten
Um die Maven-Abhängigkeit hinzuzufügen, fügen Sie den folgenden XML-Code in die Datei pom.xml des Projekts ein. Ersetzen Sie {version_number}
die Versionsnummer der neuesten stabilen Version, wie auf der Azure-Identitätsbibliotheksseite dargestellt.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>{version_number}</version>
</dependency>
Wichtige Begriffe
Es gibt zwei wichtige Konzepte zum Verständnis der Azure-Identitätsbibliothek: das Konzept von Anmeldeinformationen und die häufigste Implementierung dieser Anmeldeinformationen, DefaultAzureCredential
.
Bei den Anmeldeinformationen handelt es sich um eine Klasse, die die Daten enthält oder abrufen kann, die für einen Dienstclient zum Authentifizieren von Anforderungen erforderlich sind. Dienstclients akzeptieren über das Azure SDK Anmeldeinformationen, wenn Sie erstellt werden, und Dienstclients verwenden diese Anmeldeinformationen zum Authentifizieren von Anforderungen an den Dienst.
Die Azure-Identitätsbibliothek konzentriert sich auf die OAuth-Authentifizierung mit Microsoft Entra ID und bietet verschiedene Anmeldeinformationsklassen, die ein Microsoft Entra Token abrufen können, um Dienstanforderungen zu authentifizieren. Alle Anmeldeinformationsklassen in dieser Bibliothek sind Implementierungen der abstrakten Klasse TokenCredential
in azure-core, und Sie können sie zum Erstellen von Dienstclients verwenden, die sich mit einem TokenCredential
authentifizieren können.
DefaultAzureCredential
ist für die meisten Szenarien geeignet, in denen die Anwendung letztendlich in der Azure-Cloud ausgeführt werden soll. 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 (einschließlich Beispielen für die Verwendung von DefaultAzureCredential
) finden Sie im Abschnitt Azure-Standardanmeldeinformationen vib Authentifizieren von in Azure gehosteten Java-Anwendungen.
Beispiele
Wie bereits in Verwenden des Azure SDK für Java erwähnt, unterscheiden sich die Verwaltungsbibliotheken geringfügig. Einer der Unterschiede besteht darin, dass Bibliotheken für die Nutzung von Azure-Diensten (so genannte Clientbibliotheken) und Bibliotheken für die Verwaltung von Azure-Dienste (als Verwaltungsbibliotheken bezeichnet) vorhanden sind. In den folgenden Abschnitten finden Sie einen kurzen Überblick über Authentifizierung in Client- und Verwaltungsbibliotheken.
Authentifizieren von Azure-Clientbibliotheken
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 von Azure-Verwaltungsbibliotheken
Die Azure-Verwaltungsbibliotheken verwenden dieselben Anmeldeinformationen-APIs wie die Azure-Clientbibliotheken, erfordern jedoch auch eine Azure-Abonnement-ID, um die Azure-Ressourcen für dieses Abonnement zu verwalten.
Sie finden die Abonnement-IDs auf der Seite Abonnements im Azure-Portal. Verwenden Sie alternativ den folgenden Azure-CLI-Befehl, um Abonnement-IDs abzurufen:
az account list --output table
Sie können die Abonnement-ID in der Umgebungsvariablen AZURE_SUBSCRIPTION_ID
festlegen. AzureProfile
übernimmt diese ID als Standard-Abonnement-ID bei der Erstellung einer Manager
Instanz im folgenden Beispiel:
AzureResourceManager azureResourceManager = AzureResourceManager.authenticate(
new DefaultAzureCredentialBuilder().build(),
new AzureProfile(AzureEnvironment.AZURE))
.withDefaultSubscription();
DefaultAzureCredential
authentifiziert in diesem Beispiel eine AzureResourceManager
-Instanz mithilfe von DefaultAzureCredential
. Anstelle von DefaultAzureCredential
können Sie auch andere Implementierungen der Tokenanmeldeinformationen verwenden, die in der Azure-Identitätsbibliothek zur Verfügung gestellt werden.
Problembehandlung
Anleitungen finden Sie unter Behandeln von Problemen bei der Azure Identity-Authentifizierung.
Nächste Schritte
In diesem Artikel wurde die Azure-Identitätsfunktion vorgestellt, die im Azure SDK für Java verfügbar ist. Es beschreibt DefaultAzureCredential
für viele Fälle als gängig und geeignet. In den folgenden Artikeln werden andere Möglichkeiten der Authentifizieren mithilfe der Azure-Identitätsbibliothek beschrieben und weitere Informationen zu DefaultAzureCredential
bereitgestellt: