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:

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 AzureResourceManagerDefaultAzureCredential. 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 DefaultAzureCredentialfolgenden Themen bereitgestellt: