Azure Data Lake Storage Gen1 での .NET SDK を使用したエンドユーザー認証

この記事では、.NET SDK を使用して、Azure Data Lake Storage Gen1 に対するエンドユーザー認証を行う方法について説明します。 .NET SDK を使用した Data Lake Storage Gen1 に対するサービス間認証については、.NET SDK を使用した Data Lake Storage Gen1 に対するサービス間認証に関する記事をご覧ください。

前提条件

.NET アプリケーションの作成

  1. Visual Studio で、 [ファイル] メニュー、 [新規作成][プロジェクト] の順に選択します。

  2. [コンソール アプリ (.NET Framework)] を選択し、 [次へ] を選択します。

  3. [プロジェクト名]CreateADLApplication と入力して、 [作成] を選択します。

  4. NuGet パッケージをプロジェクトに追加します。

    1. ソリューション エクスプローラーでプロジェクト名を右クリックし、 [NuGet パッケージの管理] をクリックします。

    2. [NuGet パッケージ マネージャー] タブで、 [パッケージ ソース]nuget.org に設定されており、 [プレリリースを含める] チェック ボックスがオンになっていることを確認します。

    3. 以下の NuGet パッケージを検索してインストールします。

      • Microsoft.Azure.Management.DataLake.Store - このチュートリアルでは、v2.1.3-preview を使用します。

      • Microsoft.Rest.ClientRuntime.Azure.Authentication - このチュートリアルでは、v2.2.12 を使用します。

        NuGet ソースの追加

    4. NuGet パッケージ マネージャーを閉じます。

  5. Program.cs を開きます。

  6. using ステートメントを次の行に置き換えます。

    using System;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Collections.Generic;
    
    using Microsoft.Rest;
    using Microsoft.Rest.Azure.Authentication;
    using Microsoft.Azure.Management.DataLake.Store;
    using Microsoft.Azure.Management.DataLake.Store.Models;
    using Microsoft.IdentityModel.Clients.ActiveDirectory;
    

エンドユーザー認証

このスニペットを .NET クライアント アプリケーションに追加します。 プレースホルダーの値を、Microsoft Entraネイティブ アプリケーションから取得した値に置き換えます (前提条件としてリストされています)。 このスニペットを使用すると、Data Lake Storage Gen1 でアプリケーションを対話的に認証できます。つまり、Azure 資格情報を入力するように求められます。

使いやすくするために、次のスニペットでは、クライアント ID とリダイレクト URI について、すべての Azure サブスクリプションで有効な既定値を使用しています。 次のスニペットでは、入力する必要があるのはテナント ID の値のみです。 テナント ID は、「テナント ID を取得する」で説明されている指示に従って取得できます。

  • Main() 関数を次のコードに置き換えます。

    private static void Main(string[] args)
    {
        //User login via interactive popup
        string TENANT = "<AAD-directory-domain>";
        string CLIENTID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
        System.Uri ARM_TOKEN_AUDIENCE = new System.Uri(@"https://management.core.windows.net/");
        System.Uri ADL_TOKEN_AUDIENCE = new System.Uri(@"https://datalake.azure.net/");
        string MY_DOCUMENTS = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
        string TOKEN_CACHE_PATH = System.IO.Path.Combine(MY_DOCUMENTS, "my.tokencache");
        var tokenCache = GetTokenCache(TOKEN_CACHE_PATH);
        var armCreds = GetCreds_User_Popup(TENANT, ARM_TOKEN_AUDIENCE, CLIENTID, tokenCache);
        var adlCreds = GetCreds_User_Popup(TENANT, ADL_TOKEN_AUDIENCE, CLIENTID, tokenCache);
    }
    

上記のスニペットに関して、以下のいくつかの点に留意してください。

  • 上記のスニペットでは、ヘルパー関数 GetTokenCacheGetCreds_User_Popup を使用しています。 これらのヘルパー関数のコードはこちらの GitHub で入手できます。
  • できるだけ短時間でチュートリアルを終了できるよう、このスニペットでは、すべての Azure サブスクリプションで既定で使用できるネイティブ アプリケーション クライアント ID を使用しています。 そのため、このスニペットを実際のアプリケーションで使用するときは、現状のままで使用してください。
  • ただし、独自のMicrosoft Entra ドメインとアプリケーション クライアント ID を使用する場合は、Microsoft Entra ネイティブ アプリケーションを作成し、作成したアプリケーションのMicrosoft Entraテナント ID、クライアント ID、リダイレクト URI を使用する必要があります。 手順については、Data Lake Storage Gen1 でのエンド ユーザー認証のための Active Directory アプリケーションの作成に関するページを参照してください。

次のステップ

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