次の方法で共有


Microsoft Information Protection SDK - ポリシー SDK プロファイルの概念

ポリシー SDK の操作を実行する前に、mip::Profile を読み込む必要があります。

次の 2 つの例は、状態ストレージとメモリ内のローカル ストレージを使用した profileSettings オブジェクトの作成方法を示しています。

プロファイルの読み込み

MipContext および ProfileObserver が定義されたので、これらを使用して、mip::PolicyProfile をインスタンス化します。 mip::PolicyProfile オブジェクトの作成には、mip::PolicyProfile::Settingsmip::MipContext が必要です。

プロファイル::設定パラメーター

PolicyProfile::Settings コンストラクターは、以下の 4 つのパラメーターを受け取ります。

  • const std::shared_ptr<MipContext>: アプリケーション情報、状態パスなどを格納するために初期化された mip::MipContext オブジェクト。
  • mip::CacheStorageType: 状態を格納する方法 (メモリ内、ディスク上、またはディスク上かつ暗号化) を定義します。 詳細については、キャッシュ ストレージの概念に関する記事を参照してください。
  • std::shared_ptr<mip::PolicyProfile::Observer> observer: プロファイル Observer 実装への共有ポインター (PolicyProfileProtectionProfile および FileProfile 内)。

次の 2 つの例は、状態ストレージとメモリ内のローカル ストレージを使用した profileSettings オブジェクトの作成方法を示しています。

メモリにのみの状態を格納する

mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };

std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(mAppInfo,
				                                                                                  "mip_data",
                                                                                        		  mip::LogLevel::Trace,
                                                                                                  false);

std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);

PolicyProfile::Settings profileSettings(
    mMipContext,                                  // mipContext object
    mip::CacheStorageType::InMemory,              // use in memory storage
    std::make_shared<PolicyProfileObserverImpl>()); // new protection profile observer

ディスク上のストレージ パスからのプロファイル設定の読み取り/書き込み

mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };

std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(mAppInfo,
			                                                                                      "mip_data",
                                                                                       			  mip::LogLevel::Trace,
                                                                                                  false);

std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);

PolicyProfile::Settings profileSettings(
    mipContext,                                    // mipContext object
    mip::CacheStorageType::OnDisk,                 // use on disk storage
    std::make_shared<PolicyProfileObserverImpl>());  // new protection profile observer

次に、promise/future パターンを使用して、Profile をロードします。

auto profilePromise = std::make_shared<std::promise<std::shared_ptr<Profile>>>();
auto profileFuture = profilePromise->get_future();
Profile::LoadAsync(profileSettings, profilePromise);

プロファイルが正常に読み込まれた場合、ProfileObserver::OnLoadSuccessmip::Profile::Observer::OnLoadSuccessの実装が通知されます。 この場合の結果オブジェクトである mip::Profile とコンテキストが、オブザーバー関数にパラメーターとして渡されます。

コンテキストは、同期操作を処理するために作成した std::promise へのポインターです。 この関数は、最初のパラメーターに渡された Profile オブジェクトに promise の値を設定するだけです。 メイン関数が、Future.get() を使用する場合、結果は呼び出し元のスレッドの新しいオブジェクトに格納できます。

//get the future value and store in profile.
auto profile = profileFuture.get();

組み合わせる

オブザーバーと認証デリゲートを完全に実装したので、プロファイルを完全にロードできるようになりました。 以下のコード切り取りは、必要なすべてのヘッダーが既に含まれていることを前提としています。

int main()
{
    const string userName = "MyTestUser@consoto.com";
    const string password = "P@ssw0rd!";
    const string clientId = "MyClientId";

    mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
 
    std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(mAppInfo,
				                                                                                       "mip_data",
                                                                                        			   mip::LogLevel::Trace,
                                                                                                       false);

    std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);

    PolicyProfile::Settings profileSettings(
        mMipContext,                                    // mipContext object
        mip::CacheStorageType::OnDisk,                 // use on disk storage
        std::make_shared<PolicyProfileObserverImpl>());  // new protection profile observer

    auto profilePromise = std::make_shared<promise<shared_ptr<PolicyProfile>>>();
    auto profileFuture = profilePromise->get_future();
    Profile::LoadAsync(profileSettings, profilePromise);
    auto profile = profileFuture.get();
}

最終的な結果として、プロファイルが正常にロードされ、profile と呼ばれるオブジェクトに格納されます。

次のステップ

プロファイルが追加されたので、次の手順として、プロファイルにエンジンを追加します。

ポリシー エンジンの概念