Azure-Authentifizierung mit Java und Azure Identity
Dieser Artikel enthält eine Übersicht über die Java Azure Identity-Bibliothek, die Microsoft Entra-Tokenauthentifizierungsunterstützung für das Azure SDK für Java bereitstellt. Diese Bibliothek bietet eine Reihe von TokenCredential
Implementierungen, mit denen Sie Azure SDK-Clients erstellen können, die die Microsoft Entra-Tokenauthentifizierung unterstützen.
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 wurden.
- Visual Studio Code-Authentifizierung mit den Anmeldeinformationen, die im Azure-Plug-In für Visual Studio Code gespeichert sind.
- Azure CLI-Authentifizierung mit den anmeldeinformationen, die in der Azure CLI gespeichert sind
- Authentifizieren von anwendungen, die in Azure gehostet werden, was 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 diesen Links, um mehr über die Besonderheiten dieser Authentifizierungsansätze zu erfahren. Im restlichen Teil dieses Artikels stellen wir die häufig verwendeten DefaultAzureCredential
und verwandten 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 Identity-Bibliotheksseite dargestellt.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>{version_number}</version>
</dependency>
Wichtige Begriffe
Es gibt zwei wichtige Konzepte für das Verständnis der Azure Identity-Bibliothek: das Konzept einer Anmeldeinformationen und die am häufigsten verwendete 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 Identity-Bibliothek konzentriert sich auf die OAuth-Authentifizierung mit Microsoft Entra ID und bietet verschiedene Anmeldeinformationsklassen, die ein Microsoft Entra-Token zum Authentifizieren von Dienstanforderungen erwerben können. 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
eignet sich für die meisten Szenarien, 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 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://<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
nimmt diese ID während der Erstellung einer Manager
Instanz im folgenden Beispiel als Standardabonnement-ID auf:
AzureResourceManager azureResourceManager = AzureResourceManager.authenticate(
new DefaultAzureCredentialBuilder().build(),
new AzureProfile(AzureEnvironment.AZURE))
.withDefaultSubscription();
DefaultAzureCredential
in diesem Beispiel verwendet wird, authentifiziert eine Instanz mithilfe von AzureResourceManager
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 mit 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 wird in vielen Fällen als häufig und angemessen beschrieben DefaultAzureCredential
. In den folgenden Artikeln werden weitere Möglichkeiten zur Authentifizierung mithilfe der Azure Identity-Bibliothek beschrieben und weitere Informationen zu DefaultAzureCredential
folgenden Themen bereitgestellt: