Azure Data Lake Storage Gen2 に対する Java を使用したサービス間認証

この記事では、Java SDK を使用して、Azure Data Lake Storage Gen2 に対するサービス間認証を行う方法について説明します。 Java SDK を使った Azure Data Lake Storage Gen2 に対するエンド ユーザー認証はサポートされません。

前提条件

  • Azure サブスクリプションAzure 無料試用版の取得に関するページを参照してください。

  • Microsoft Entra ID "Web" アプリケーションを作成します。 「Microsoft Entra IDを使用したData Lake Storage Gen2によるサービス間認証」の手順を完了している必要があります。

  • Maven。 このチュートリアルでは、ビルドとプロジェクトの依存関係に Maven を使用します。 Maven や Gradle などのビルド システムを使用しなくてもビルドすることはできますが、これらのシステムを使用すると、依存関係の管理が容易になります。

  • (オプション) IntelliJ IDEAEclipse などの IDE。

サービス間認証

  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) を使用することです。 2 番目の依存関係は、このアプリで使用するログ記録フレームワーク (slf4j-nop) を指定することです。 Data Lake Storage Gen2 SDK では、slf4j ログ ファサードを使用します。それを使用すると、Log4j、Java ログ、logback などの多数の一般的なログ記録フレームの中から選択することも、ログを記録しないようにすることもできます。 この例ではログを無効にするため、slf4j-nop バインドを使用します。 アプリで他のログ オプションを使用するには、「ログに対するプロジェクトの依存関係の宣言」を参照してください。

  3. アプリケーションに次の import ステートメントを追加します。

    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 のいずれかのクラスを使用して (次の例では、credential を使用) 以前に作成した Active Directory Web アプリのトークンを取得します。 トークン プロバイダーは、トークンを取得するために使用した資格情報をメモリにキャッシュし、そのトークンの有効期限が切れそうになった場合に自動的に更新します。 トークンがカスタム コードで取得されるように、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 アカウントとの対話に必要なセキュリティ トークンを管理できる便利な方法が用意されています。 ただし、使用する方法はこれらに限定されるわけではありません。 Azure ID クライアント ライブラリや独自のカスタム コードの使用など、トークンを取得する他の任意の方法も使用できます。

次の手順

この記事では、Data Lake Storage Gen2 に対し、Java SDK からエンドユーザー認証を使って認証を行う方法について説明しました。 これで、Java SDK を使用して Data Lake Storage Gen2 を使用する方法について説明した次の記事に進めるようになりました。