Freigeben über


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:

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: