Azure Data Lake Storage Gen1 に対する .NET SDK を使用したサービス間認証

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

前提条件

  • Visual Studio 2013 以降。 以下の手順では、Visual Studio 2019 を使用します。

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

  • Microsoft Entra ID "Web" アプリケーションを作成します。 「Microsoft Entra IDを使用した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を開き、既存のコードを削除し、次のステートメントに置き換えて、名前空間の参照を追加します。

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates; // Required only if you are using an Azure AD application created with certificates

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 Web アプリケーションから取得した値に置き換えます (前提条件としてリストされています)。 このスニペットを使用すると、Microsoft Entra Web アプリケーションのクライアント シークレット/キーを使用して、Data Lake Storage Gen1を使用して非対話形式でアプリケーションを認証できます。

private static void Main(string[] args)
{
    // Service principal / application authentication with client secret / key
    // Use the client ID of an existing AAD "Web App" application.
    string TENANT = "<AAD-directory-domain>";
    string CLIENTID = "<AAD_WEB_APP_CLIENT_ID>";
    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 secret_key = "<AAD_WEB_APP_SECRET_KEY>";
    var armCreds = GetCreds_SPI_SecretKey(TENANT, ARM_TOKEN_AUDIENCE, CLIENTID, secret_key);
    var adlCreds = GetCreds_SPI_SecretKey(TENANT, ADL_TOKEN_AUDIENCE, CLIENTID, secret_key);
}

上記のスニペットでは、ヘルパー関数 GetCreds_SPI_SecretKey を使用しています。 このヘルパー関数のコードはこちらの GitHub で入手できます。

証明書によるサービス間認証

このスニペットを .NET クライアント アプリケーションに追加します。 プレースホルダーの値を、Microsoft Entra Web アプリケーションから取得した値に置き換えます (前提条件としてリストされています)。 このスニペットを使用すると、Microsoft Entra Web アプリケーションの証明書を使用して、Data Lake Storage Gen1を使用して非対話形式でアプリケーションを認証できます。 Microsoft Entra アプリケーションを作成する方法については、「証明書を使用してサービス プリンシパルを作成する」を参照してください。

private static void Main(string[] args)
{
    // Service principal / application authentication with certificate
    // Use the client ID and certificate of an existing AAD "Web App" application.
    string TENANT = "<AAD-directory-domain>";
    string CLIENTID = "<AAD_WEB_APP_CLIENT_ID>";
    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/");
    var cert = new X509Certificate2(@"d:\cert.pfx", "<certpassword>");
    var armCreds = GetCreds_SPI_Cert(TENANT, ARM_TOKEN_AUDIENCE, CLIENTID, cert);
    var adlCreds = GetCreds_SPI_Cert(TENANT, ADL_TOKEN_AUDIENCE, CLIENTID, cert);
}

上記のスニペットでは、ヘルパー関数 GetCreds_SPI_Cert を使用しています。 このヘルパー関数のコードはこちらの GitHub で入手できます。

次のステップ

この記事では、.NET SDK からサービス間認証を使って Data Lake Storage Gen1 に対して認証を行う方法について説明しました。 これで、.NET SDK を使用して Data Lake Storage Gen1 を操作する方法について説明した次の記事に進めるようになりました。