Azure-Authentifizierung mit Java und Azure Identity
Dieser Artikel enthält eine Übersicht über die Azure Identity-Bibliothek für Java, die Microsoft Entra-Tokenauthentifizierungsunterstützung für 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.
- Azure CLI-Authentifizierung, bei der die Anmeldeinformationen in der Azure CLI gespeichert werden.
- Azure Developer CLI-Authentifizierung mit den Anmeldeinformationen, die in der Azure Developer CLI gespeichert sind
- Azure PowerShell-Authentifizierung mit den in Azure PowerShell gespeicherten Anmeldeinformationen
- Authentifizierung von in Azure gehosteten Anwendungen, die Folgendes ermöglicht:
- Authentifizierung per
DefaultAzureCredential
- Verwaltete Identitätsauthentifizierung
- Authentifizierung per
- Authentifizierung mit Dienstprinzipalen, die Folgendes ermöglicht:
- Geheime Clientschlüsselauthentifizierung
- Authentifizierung mit Clientzertifikat
- 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 Beispiele, die verwendet werden, finden Sie im Abschnitt "DefaultAzureCredential" von Azure gehostete Java-Anwendungen.For more information, including examples using DefaultAzureCredential
, see the DefaultAzureCredential section of Authenticating Azure-hosted Java applications.
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: