Microsoft Information Protection SDK - Konsep profil SDK Kebijakan

mip::Profile harus dimuat sebelum operasi SDK Kebijakan apa pun dapat dilakukan.

Dua contoh di bawah ini menunjukkan cara membuat objek profileSettings menggunakan penyimpanan lokal untuk penyimpanan status serta hanya dalam memori.

Memuat Profil

Sekarang setelah MipContext dan ProfileObserver didefinisikan, kita akan menggunakannya untuk membuat instans mip::PolicyProfile. Membuat objek mip::PolicyProfile memerlukan mip::PolicyProfile::Settings dan mip::MipContext.

Profil::Parameter Pengaturan

PolicyProfile::Settings Konstruktor menerima empat parameter, yang tercantum di bawah ini:

  • const std::shared_ptr<MipContext>: Objek mip::MipContext yang diinisialisasi untuk menyimpan info aplikasi, jalur status, dll.
  • mip::CacheStorageType: Menentukan cara menyimpan status: Dalam memori, pada disk, atau pada disk dan dienkripsi. Untuk detail selengkapnya, lihat konsep penyimpanan Cache.
  • std::shared_ptr<mip::PolicyProfile::Observer> observer: Pointer bersama ke implementasi profil Observer (dalam PolicyProfile, ProtectionProfile, dan FileProfile).

Dua contoh di bawah ini menunjukkan cara membuat objek profileSettings menggunakan penyimpanan lokal untuk penyimpanan status serta hanya dalam memori.

Simpan status dalam memori saja

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

Membaca/menulis pengaturan profil dari jalur penyimpanan pada disk

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

Selanjutnya, gunakan pola janji/masa depan untuk memuat Profile.

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

Jika profil berhasil dimuat, ProfileObserver::OnLoadSuccess, implementasi mip::Profile::Observer::OnLoadSuccess kami akan diberitahukan. Objek yang dihasilkan, dalam hal ini, mip::Profileserta konteks, diteruskan sebagai parameter ke fungsi pengamat.

Kontex adalah penunjuk ke std::promise yang kami buat untuk menangani operasi asinkron. Fungsi ini hanya mengatur nilai janji ke objek Profil yang diteruskan untuk parameter pertama. Ketika fungsi utama menggunakan Future.get(), hasilnya dapat disimpan di sebuah objek baru di utas panggilan.

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

Menyatukannya

Setelah sepenuhnya menerapkan pengamat dan delegasi autentikasi, sekarang sudah memungkinkan untuk memuat profil sepenuhnya. Cuplikan kode di bawah ini mengasumsikan semua header yang diperlukan sudah disertakan.

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();
}

Hasil akhirnya adalah bahwa kita telah berhasil memuat profil dan disimpan dalam objek yang disebut profile.

Langkah berikutnya

Sekarang setelah profil ditambahkan, langkah selanjutnya adalah menambahkan mesin ke profil.

Konsep mesin kebijakan