Dienst-zu-Dienst-Authentifizierung in Azure Data Lake Storage Gen2 mithilfe von Java
In diesem Artikel erfahren Sie, wie Sie mithilfe des Java SDK die Dienst-zu-Dienst-Authentifizierung in Azure Data Lake Storage Gen2 durchführen. Die Authentifizierung von Endbenutzer*innen in Data Lake Storage Gen2 mit dem Java SDK wird nicht unterstützt.
Voraussetzungen
Ein Azure-Abonnement. Siehe Kostenlose Azure-Testversion.
Erstellen Sie eine Microsoft Entra ID "Web"-Anwendung. Sie müssen die Schritte unter Dienst-zu-Dienst-Authentifizierung mit Data Lake Storage Gen2 mithilfe von Microsoft Entra ID abgeschlossen haben.
Maven. Dieses Tutorial verwendet Maven für die Erstellung und für Projektabhängigkeiten. Obwohl die Erstellung auch ohne ein Buildsystem wie Maven oder Gradle möglich ist, lassen sich Abhängigkeiten mit einem solchen System viel einfacher verwalten.
(Optional) Eine IDE wie IntelliJ IDEA oder Eclipse.
Dienst-zu-Dienst-Authentifizierung
Erstellen Sie ein Maven-Projekt. Verwenden Sie hierfür mvn archetype in der Befehlszeile oder eine IDE. Eine Anleitung zum Erstellen eines Java-Projekts mit IntelliJ finden Sie hier. Eine Anleitung zum Erstellen eines Projekts mit Eclipse finden Sie hier.
Fügen Sie Ihrer Maven-Datei pom.xml die folgenden Abhängigkeiten hinzu. Fügen Sie den folgenden Codeausschnitt vor dem Tag </project> hinzu:
<dependencies> <dependency> <groupId>com.azure</groupId> <artifactId>azure-storage-file-datalake</artifactId> <version>12.6.0</version> </dependency> <dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> <version>1.3.3</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-nop</artifactId> <version>1.7.21</version> </dependency> </dependencies>
Die erste Abhängigkeit ist die Verwendung des Data Lake Storage Gen2 SDK (
azure-storage-file-datalake
) aus dem Maven-Repository. Die zweite Abhängigkeit ist die Angabe des Protokollierungsframeworks (slf4j-nop
) für diese App. Das Data Lake Storage Gen2 SDK verwendet die Protokollierungsfassade slf4j, bei der Sie zwischen mehreren gängigen Protokollierungsframeworks wie log4j, Java-Protokollierung und Logback auswählen oder die Protokollierung deaktivieren können. Da wir im vorliegenden Beispiel die Protokollierung deaktivieren möchten, verwenden wir die Bindung slf4j-nop. Informationen zur Verwendung anderer Protokollierungsoptionen in Ihrer App finden Sie unter Deklarieren von Projektabhängigkeiten für die Protokollierung.Fügen Sie Ihrer Anwendung die folgenden Importanweisungen hinzu.
import com.azure.identity.ClientSecretCredential; import com.azure.identity.ClientSecretCredentialBuilder; import com.azure.storage.file.datalake.DataLakeDirectoryClient; import com.azure.storage.file.datalake.DataLakeFileClient; import com.azure.storage.file.datalake.DataLakeServiceClient; import com.azure.storage.file.datalake.DataLakeServiceClientBuilder; import com.azure.storage.file.datalake.DataLakeFileSystemClient; import com.azure.storage.file.datalake.models.ListPathsOptions; import com.azure.storage.file.datalake.models.PathAccessControl; import com.azure.storage.file.datalake.models.PathPermissions;
Rufen Sie mit dem folgenden Codeausschnitt in Ihrer Java-App ein Token für die Active Directory-Web-App ab, die Sie zuvor mit einer der Klassen von
StorageSharedKeyCredential
erstellt haben (Im folgenden Beispiel wirdcredential
verwendet). Der Tokenanbieter speichert die verwendeten Anmeldeinformationen zwischen, um das Token im Arbeitsspeicher abzurufen, und erneuert das Token automatisch, bevor es abläuft. Sie können zwar auch eigene Unterklassen vonStorageSharedKeyCredential
erstellen, damit Token durch Ihren Kundencode abgerufen werden. Wir verwenden jedoch fürs Erste die Unterklasse aus dem SDK.Ersetzen Sie FILL-IN-HERE durch die tatsächlichen Werte für die Microsoft Entra Webanwendung.
private static String clientId = "FILL-IN-HERE"; private static String tenantId = "FILL-IN-HERE"; private static String clientSecret = "FILL-IN-HERE"; ClientSecretCredential credential = new ClientSecretCredentialBuilder().clientId(clientId).tenantId(tenantId).clientSecret(clientSecret).build();
Das Data Lake Storage Gen2 SDK ermöglicht die komfortable Verwaltung der Sicherheitstoken, die für die Kommunikation mit dem Data Lake Storage Gen2-Konto benötigt werden. Das SDK ermöglicht jedoch auch die Verwendung anderer Methoden. Token können daher auch auf andere Weise abgerufen werden – etwa mit der Azure-Identitätsclientbibliothek oder mit eigenem benutzerdefiniertem Code.
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie die Authentifizierung von Endbenutzer*innen verwenden, um sich mithilfe des Java SDK bei Data Lake Storage Gen2 zu authentifizieren. In den folgenden Artikeln wird erörtert, wie Sie das Java SDK mit Data Lake Storage Gen2 verwenden.