クイックスタート: 秘密度ラベルを一覧表示する (C++)

このクイックスタートでは、MIP File SDK を使用して、組織用に構成された秘密度ラベルを一覧表示する方法について説明します。

前提条件

先に進む前に、次の前提条件をまだ実行していない場合は完了してください。

秘密度ラベルを一覧表示するロジックを追加する

ファイル エンジン オブジェクトを使用して、組織の秘密度ラベルを一覧表示するロジックを追加します。

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

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

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

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

    // List sensitivity labels
    cout << "\nSensitivity labels for your organization:\n";
    auto labels = engine->ListSensitivityLabels();
    for (const auto& label : labels)
    {
       cout << label->GetName() << " : " << label->GetId() << endl;
    
       for (const auto& child : label->GetChildren())
       {
         cout << "->  " << child->GetName() << " : " << child->GetId() << endl;
       }
    }
    system("pause");
    

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

次の PowerShell スクリプトを使用して、AuthDelegateImpl::AcquireOAuth2Token の実装内で SDK から要求されるアクセス トークンを生成します。 このスクリプトでは、前に「MIP SDK のセットアップと構成」でインストールした ADAL.PS モジュールの 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 = '0edbblll-8773-44de-b87c-b8c6276d41eb'  # App ID of the Azure AD app registration
    $redirectUri = 'bltest://authorize'              # 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. F6 キー ([ソリューションのビルド]) を使用して、クライアント アプリケーションをビルドします。 ビルド エラーがない場合は、F5 キー ([デバッグの開始]) を使用してアプリケーションを実行します。

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

  3. このプロンプトのためのアクセス トークンを生成するには、PowerShell スクリプトに戻って、次のようにします。

    • $authority および $resourceUrl 変数を更新します。 これらは、手順 2. のコンソール出力で指定された値と一致している必要があります。 これらの値は、MIP SDK から AcquireOAuth2Token()challenge パラメーターで提供されます。

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

      Visual Studio acquire token sign-in

    • サインイン アカウントでの実行中に、アプリケーションで MIP API にアクセスできるようにすることについての同意を求められることもあります。 これは、Microsoft Entra アプリケーションの登録が (「MIP SDK のセットアップと構成」での概説どおりに) 事前に同意されていないか、別の (アプリケーションの登録先とは異なる) テナントのアカウントでサインインしているときに発生します。 [同意] をクリックして、同意を記録します。

      Visual Studio consent

  4. アクセス トークンを手順 2 のプロンプトに貼り付けると、次の例のような秘密度ラベルがコンソール出力に表示されます。

    Non-Business : 87ba5c36-17cf-14793-bbc2-bd5b3a9f95cz
    Public : 83867195-f2b8-2ac2-b0b6-6bb73cb33afz
    General : f42a3342-8706-4288-bd31-ebb85995028z
    Confidential : 074e457c-5848-4542-9a6f-34a182080e7z
    Highly Confidential : f55c2dea-db0f-47cd-8520-a52e1590fb6z
    
    Press any key to continue . . .
    

    Note

    1 つ以上の秘密度ラベルの ID (f42a3342-8706-4288-bd31-ebb85995028z など) をコピーして保存しておいてください。次のクイックスタートで使用します。

トラブルシューティング

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

まとめ エラー メッセージ 解決策
不正なアクセス トークン An exception occurred... is the access token incorrect/expired? (例外が発生しました... アクセス トークンが正しくないか、有効期限が切れている可能性があります)

Failed API call: profile_add_engine_async Failed with: [class mip::PolicySyncException] Failed acquiring policy, Request failed with http status code: 401, x-ms-diagnostics: [2000001;reason="OAuth token submitted with the request cannot be parsed.";error_category="invalid_token"], correlationId:[35bc0023-3727-4eff-8062-000006d5d672]' (API 呼び出しに失敗しました: profile_add_engine_async 失敗した原因: [class mip::PolicySyncException] ポリシーの取得中にエラーが発生しました。要求が次の http 状態コードで失敗しました: 401、x-ms-diagnostics: [2000001;理由="要求と共に送信された OAuth トークンを解析できません。";error_category="invalid_token"], correlationId:[35bc0023-3727-4eff-8062-000006d5d672]')

C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (process 29924) exited with code 0. (C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (process 29924) がコード 0 で終了しました。)

Press any key to close this window. (このウィンドウを閉じるには、任意のキーを押してください) 。 。
プロジェクトは正常にビルドされたが、左記のような出力が表示された場合は、おそらく、AcquireOAuth2Token() メソッドのトークンが無効であるか、有効期限が切れています。 「アクセス トークンを生成する PowerShell スクリプトを作成する」に戻ってアクセス トークンを再生成し、もう一度 AcquireOAuth2Token() を更新してから、リビルドと再テストを行います。 jwt.ms シングルページ Web アプリケーションを使用して、トークンとそのクレームを確認および検証することもできます。
秘密度ラベルが構成されていない 該当なし プロジェクトが正常にビルドされたが、コンソール ウィンドウに出力がない場合は、組織の秘密度ラベルが正しく構成されていることを確認します。 詳細については、「MIP SDK のセットアップと構成」の "ラベル分類と保護設定の定義" に関する説明を参照してください。

次のステップ

組織の秘密度ラベルを一覧表示する方法を学習しました。次のクイックスタートにお進みください。