使用 Java 进行 Azure Data Lake Storage Gen2 服务到服务身份验证

本文介绍如何使用 Java SDK 执行 Azure Data Lake Storage Gen2 服务到服务身份验证。 不支持使用 Java SDK 进行 Data Lake Storage Gen2 最终用户身份验证。

先决条件

服务到服务身份验证

  1. 在命令行使用 mvn archetype 或通过 IDE 创建一个 Maven 项目。 有关如何使用 IntelliJ 创建 Java 项目的说明,请参阅此文。 有关如何使用 Eclipse 创建项目的说明,请参阅此文

  2. 将以下依赖项添加到 Maven pom.xml 文件。 在 </project> 标记前添加以下代码片段:

    <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>
    

    第一个依赖项从 maven 存储库使用 Data Lake Storage Gen2 SDK (azure-storage-file-datalake)。 第二个依赖项指定此应用使用的日志记录框架 (slf4j-nop)。 Data Lake Storage Gen2 SDK 使用 slf4j 日志记录体系,允许用户从多种常用的记录框架(如 Log4j、Java 日志记录、Logback 等)中进行选择,或者不使用日志记录。 本示例禁用日志记录,因此我们使用 slf4j-nop 绑定。 若要在应用中使用其他日志记录选项,请参阅声明用于日志记录的项目依赖项

  3. 将以下导入语句添加到应用程序。

    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;
    
  4. 使用 Java 应用中的以下代码片段获取以前使用 StorageSharedKeyCredential 类之一创建的 Active Directory Web 应用的令牌(以下示例使用 credential)。 令牌提供程序将缓存用于获取内存中令牌的凭据,在令牌即将过期时自动续订令牌。 可以创建自己的 StorageSharedKeyCredential 子类以便通过客户代码获取令牌。 我们暂时只使用 SDK 中提供的子类。

    FILL-IN-HERE 替换为 Microsoft Entra Web 应用程序的实际值。

    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();
    

Data Lake Storage Gen2 SDK 可让用户使用便利的方法管理所需的安全令牌来与 Data Lake Storage Gen2 帐户通信。 但是,该 SDK 并未规定只能使用这些方法。 此外,也可以使用其他任何方法获取令牌,例如,使用 Azure 标识客户端库或自己的自定义代码。

后续步骤

本文介绍如何使用 Java SDK 通过最终用户身份验证进行 Data Lake Storage Gen2 身份验证。 接下来,可以查看介绍如何使用 Java SDK 在 Data Lake Storage Gen2 中执行操作的以下文章。