次の方法で共有


クイック スタート: List Protection テンプレート (C++)

このクイック スタートでは、MIP Protection SDK を使用して、ユーザーが使用できる保護テンプレートを使用する方法について説明します。

[前提条件]

まだ行っていない場合は、続行する前に次の前提条件を満たしていることを確認してください。

保護テンプレートを一覧表示するロジックを追加する

保護エンジン オブジェクトを使用して、ユーザーが使用できる保護テンプレートを一覧表示するロジックを追加します。

  1. 前の「クイック スタート - クライアント アプリケーションの初期化 - 保護 SDK (C++)」の記事で作成した Visual Studio ソリューションを開きます。

  2. ソリューション エクスプローラーを使用して、main() メソッドの実装を含む.cpp ファイルをプロジェクトで開きます。 デフォルトでは、プロジェクト作成時に指定した名前と同じ名前が、それを含むプロジェクトに設定されます。

  3. using mip::ProtectionEngine;の後、ファイルの先頭付近に次のusing ディレクティブを追加します。

    using std::endl;
    
  4. main() 本体の末尾付近の最後の catch ブロックの右中かっこ } の下、return 0; の上 (先行するクイックスタートで終えた場所) に次のコードを挿入します。

     // List protection templates
     const shared_ptr<ProtectionEngineObserver> engineObserver = std::make_shared<ProtectionEngineObserver>();
     // Create a context to pass to 'ProtectionEngine::GetTemplateListAsync'. That context will be forwarded to the
     // corresponding ProtectionEngine::Observer methods. In this case, we use promises/futures as a simple way to detect
     // the async operation completes synchronously.
     auto loadPromise = std::make_shared<std::promise<vector<shared_ptr<mip::TemplateDescriptor>>>>();
     std::future<vector<shared_ptr<mip::TemplateDescriptor>>> loadFuture = loadPromise->get_future();
     engine->GetTemplatesAsync(engineObserver, loadPromise);
     auto templates = loadFuture.get();
    
     cout << "*** Template List: " << endl;
    
     for (const auto& protectionTemplate : templates) {
         cout << "Name: " << protectionTemplate->GetName() << " : " << protectionTemplate->GetId() << endl;
     }
    
    

アクセス トークンを生成する PowerShell スクリプトを作成する

次の PowerShell スクリプトを使用してアクセス トークンを生成します。アクセス トークンは、 AuthDelegateImpl::AcquireOAuth2Token 実装で SDK によって要求されます。 このスクリプトでは、前にインストールした ADAL.PS モジュールの "MIP SDK のセットアップと構成" の Get-ADALToken コマンドレットを使用します。

  1. PowerShell スクリプト ファイル (拡張子.ps1) を作成し、次のスクリプトをコピーしてファイルに貼り付けます。

    • $authority$resourceUrl は、後のセクションで更新されます。
    • Microsoft Entra アプリの登録で指定した値と一致するように、 $appId$redirectUriを更新します。
    $authority = '<authority-url>'                   # Specified when SDK calls AcquireOAuth2Token()
    $resourceUrl = '<resource-url>'                  # Specified when SDK calls AcquireOAuth2Token()
    $appId = '<app-ID>'                              # App ID of the Azure AD app registration
    $redirectUri = '<redirect-uri>'                  # Redirect URI of the Azure AD app registration
    $response = Get-ADALToken -Resource $resourceUrl -ClientId $appId -RedirectUri $redirectUri -Authority $authority -PromptBehavior:RefreshSession
    $response.AccessToken | clip                     # Copy the access token text to the clipboard
    
  2. 後でクライアント アプリケーションから要求されたときに実行できるように、スクリプト ファイルを保存します。

アプリケーションのビルドとテスト

最後に、クライアント アプリケーションをビルドしてテストします。

  1. Ctrl + Shift + b (ソリューションのビルド) を使用して、クライアント アプリケーションをビルドします。 ビルド エラーがない場合は、F5 (デバッグの開始) を使用してアプリケーションを実行します。

  2. プロジェクトが正常にビルドされて実行されると、SDK が AcquireOAuth2Token() メソッドを呼び出すたびに、アプリケーションによってアクセス トークンの入力が求められます。 複数回プロンプトが表示され、要求された値が同じ場合は、以前に生成されたトークンを再利用できます。

  3. プロンプトのアクセス トークンを生成するには、PowerShell スクリプトに戻り、次の操作を行います。

    • $authority変数と$resourceUrl変数を更新します。 これらは、手順 2 のコンソール出力で指定された値と一致する必要があります。

    • PowerShell スクリプトを実行します。 Get-ADALToken コマンドレットは、次の例のように Microsoft Entra 認証プロンプトをトリガーします。 手順 2 のコンソール出力で指定したのと同じアカウントを指定します。 サインインに成功すると、アクセス トークンがクリップボードに配置されます。

      Visual Studio でトークン サインインを取得する

    • サインイン アカウントで実行中に、アプリケーションが MIP API にアクセスできるようにするために、同意が必要になる場合もあります。 これは、Microsoft Entra アプリケーションの登録が事前に同意されていない場合 (「MIP SDK のセットアップと構成」で説明されているように)、または別のテナント (アプリケーションが登録されているテナント以外) のアカウントでサインインしている場合に発生します。 同意を記録するには、[ 承諾 ] をクリックするだけです。

      Visual Studio の同意

  4. 手順 2 のプロンプトにアクセス トークンを貼り付けた後、次の例のように、コンソール出力に保護テンプレートが表示されます。

    *** Template List:
    Name: Confidential \ All Employees : a74f5027-f3e3-4c55-abcd-74c2ee41b607
    Name: Highly Confidential \ All Employees : bb7ed207-046a-4caf-9826-647cff56b990
    Name: Confidential : 174bc02a-6e22-4cf2-9309-cb3d47142b05
    Name: Contoso Employees Only : 667466bf-a01b-4b0a-8bbf-a79a3d96f720
    
    C:\MIP Sample Apps\ProtectionQS\Debug\ProtectionQS.exe (process 8252) exited with code 0.
    To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stops.
    
    Press any key to continue . . .
    

    次のクイック スタートで使用するように、1 つ以上の保護テンプレート ( f42a3342-8706-4288-bd31-ebb85995028z など) の ID をコピーして保存します。

トラブルシューティング

C++ アプリケーションの実行中の問題

概要 エラーメッセージ 解決策
不正なアクセス トークン 例外が発生しました...アクセス トークンが正しくないか、有効期限が切れていますか?

失敗した API 呼び出し: profile_add_engine_async失敗しました。[class mip::P olicySyncException] ポリシーの取得に失敗しました。要求は http 状態コード 401、x-ms-diagnostics: [2000001; で失敗しました。reason="要求と共に送信された OAuth トークンは解析できません。"error_category="invalid_token"], correlationId:[35bc0023-3727-4eff-8062-000006d5d672]'

C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (プロセス 29924) がコード 0 で終了しました。

このウィンドウを閉じるには、任意のキーを押します。 . .
プロジェクトが正常にビルドされていても、左側のような出力が表示される場合は、 AcquireOAuth2Token() メソッドに無効なトークンまたは期限切れのトークンが含まれている可能性があります。 PowerShell スクリプトの作成に戻り、アクセス トークンを生成してアクセス トークンを再生成し、AcquireOAuth2Token()をもう一度更新し、再構築/再テストします。 jwt.ms シングルページ Web アプリケーションを使用して、トークンとその要求を調べて確認することもできます。

次のステップ

認証されたユーザーが使用できる保護テンプレートを一覧表示する方法を学習したので、次のクイック スタートを試してください。

[テキストの暗号化と暗号化解除](quick-protection-encrypt-decrypt text-cpp.md)