クイックスタート: Protection SDK 向けのクライアント アプリケーションの初期化 (C#)

このクイックスタートでは、実行時に MIP SDK .NET ラッパーによって使用される、クライアントの初期化パターンを実装する方法を示します。

Note

MIP .NET ラッパーの Protection SDK を使用するすべてのクライアント アプリケーションに対して、このクイックスタートで概説されている手順を実施する必要があります。 このクイックスタートは、アプリケーションの初期化と、認証の委任および同意の委任の各クラスの実装後に、順次実行する必要があります。

前提条件

まだ実施していない場合は、必ず次の作業を行ってください。

  • Microsoft Information Protection (MIP) SDK のセットアップと構成」の手順を完了します。 この "Protection のプロファイルとエンジンのセットアップ" クイックスタートは、SDK が適切にセットアップおよび構成されていることを前提としています。
  • 必要に応じて:
    • プロファイルとエンジンのオブジェクトに関する記事を確認します。 プロファイルとエンジンのオブジェクトは、MIP File、MIP Policy、MIP Protection の各 SDK を使用するクライアントによって必要とされるユニバーサルな概念です。
    • 認証の概念に関する記事を確認して、認証と同意が SDK とクライアント アプリケーションによってどのように実装されるかについて学習します。

Visual Studio のソリューションとプロジェクトを作成する

まず、最初の Visual Studio ソリューションとプロジェクトを作成して構成します。他のクイックスタートは、これに基づいて構築されます。

  1. Visual Studio 2017 を開いて、[ファイル] メニュー、[新規][プロジェクト] の順に選択します。 [新しいプロジェクト] ダイアログで次の操作を行います。

    • 左側のペインの [インストール済み][Visual C#] の下の、[Windows デスクトップ] を選択します。

    • 中央のペインで、[コンソール アプリ (.NET Framework)] を選択します

    • 下部のペインで、プロジェクトの [名前][場所]、含める [ソリューション名] を適宜更新します。

    • 完了したら、右下の [OK] ボタンをクリックします。

      Visual Studio solution creation

  2. MIP File SDK 用の Nuget パッケージをプロジェクトに追加します。

    • ソリューション エクスプローラーで、プロジェクト ノード (最上位/ソリューション ノードのすぐ下) を右クリックして、[NuGet パッケージの管理] を選択します。
    • [エディター グループ] タブ領域で [NuGet パッケージ マネージャー] タブが開いたら、次の操作を行います。
      • 参照を選択します。
      • 検索ボックスに「Microsoft.InformationProtection」と入力します。
      • [Microsoft.InformationProtection.File] パッケージを選択します。
      • [インストール] をクリックし、[変更のプレビュー] の確認ダイアログが表示されたら [OK] をクリックします。
  3. 上記の手順を繰り返して MIP Protection SDK パッケージを追加しますが、代わりに "Microsoft.IdentityModel.Clients.ActiveDirectory" をアプリケーションに追加します。

まだ実装されていない場合は、認証と同意の委任を実装するために、File SDK アプリケーションの初期化に関する記事に記載されている手順に従います。

MIP SDK マネージド ラッパーを初期化する

  1. ソリューション エクスプローラーで、Main() メソッドの実装を含むプロジェクトの .cs ファイルを開きます。 既定の名前は、それが含まれるプロジェクトと同じであり、プロジェクトの作成時に指定したものです。

  2. 生成された main() の実装を削除します。

  3. マネージド ラッパーには、初期化、MipContext の作成、プロファイルの読み込み、リソースの解放に使用される静的クラス Microsoft.InformationProtection.MIP が含まれています。 File SDK 操作のためにラッパーを初期化するには、MIP.Initialize() を呼び出し、MipComponent.Protection を渡して、保護操作に必要なライブラリを読み込みます。

  4. Program.csMain() に次のコードを追加し、<application-id> を、前に作成した Microsoft Entra アプリケーションの登録の ID に置き換えます。

using System;
using System.Threading.Tasks;
using Microsoft.InformationProtection;
using Microsoft.InformationProtection.Exceptions;
using Microsoft.InformationProtection.Protection;

namespace mip_sdk_dotnet_quickstart
{
    class Program
    {
        private const string clientId = "<application-id>";
        private const string appName = "<friendly-name>";

        static void Main(string[] args)
        {
            //Initialize Wrapper for Protection SDK operations
            MIP.Initialize(MipComponent.Protection);
        }
    }
}

Protection のプロファイルとエンジンを作成する

前述のとおり、MIP API を使用する SDK クライアントには、プロファイルとエンジンのオブジェクトが必要です。 ネイティブ DLL を読み込み、プロファイルとエンジンのオブジェクトをインスタンス化するためのコードを追加することで、このクイックスタートのコーディング部分を完了します。

using System;
using System.Threading.Tasks;
using Microsoft.InformationProtection;
using Microsoft.InformationProtection.Exceptions;
using Microsoft.InformationProtection.Protection;

namespace mip_sdk_dotnet_quickstart
{
     class Program
     {
          private const string clientId = "<application-id>";
          private const string appName = "<friendly-name>";

          static void Main(string[] args)
          {
               // Initialize Wrapper for Protection SDK operations.
               MIP.Initialize(MipComponent.Protection);

               // Create ApplicationInfo, setting the clientID from Azure AD App Registration as the ApplicationId.
               ApplicationInfo appInfo = new ApplicationInfo()
               {
                    ApplicationId = clientId,
                    ApplicationName = appName,
                    ApplicationVersion = "1.0.0"
               };

               // Instantiate the AuthDelegateImpl object, passing in AppInfo.
               AuthDelegateImplementation authDelegate = new AuthDelegateImplementation(appInfo);

               // Create MipConfiguration Object
               MipConfiguration mipConfiguration = new MipConfiguration(appInfo, "mip_data", LogLevel.Trace, false);

               // Create MipContext using Configuration
               mipContext = MIP.CreateMipContext(mipConfiguration);
                
               // Initialize and instantiate the ProtectionProfile.
               // Create the ProtectionProfileSettings object.
               // Initialize protection profile settings to create/use local state.
               var profileSettings = new ProtectionProfileSettings(mipContext,
                                        CacheStorageType.OnDiskEncrypted,                                        
                                        new ConsentDelegateImplementation());

               // Load the Profile async and wait for the result.
               var protectionProfile = Task.Run(async () => await MIP.LoadProtectionProfileAsync(profileSettings)).Result;

               // Create a ProtectionEngineSettings object, then use that to add an engine to the profile.
               var engineSettings = new ProtectionEngineSettings("user1@tenant.com", authDelegate, "", "en-US");
               engineSettings.Identity = new Identity("user1@tenant.com");
               var protectionEngine = Task.Run(async () => await protectionProfile.AddEngineAsync(engineSettings)).Result;

               // Application Shutdown
               // handler = null; // This will be used in later quick starts.
               protectionEngine = null;
               protectionProfile = null;
               mipContext = null;
          }
     }
}
  1. 次の値を使用して、貼り付けたソース コードのプレースホルダー値を置き換えます。

    プレースホルダー
    <application-id> 「MIP SDK のセットアップと構成」で登録したアプリケーションに割り当てられた Microsoft Entra アプリケーション ID (2 個のインスタンス)。 0edbblll-8773-44de-b87c-b8c6276d41eb
    <friendly-name> アプリケーションのユーザー定義のフレンドリ名。 AppInitialization
  2. ここで、アプリケーションの最終ビルドを行い、すべてのエラーを解決します。 コードが正常にビルドされます。

次のステップ

これで、初期化コードが完成したので、次のクイックスタートに進み、MIP Protection SDK の操作を開始する準備ができました。