Aracılığıyla paylaş


Microsoft Information Protection SDK - Koruma SDK'sı profil kavramları

Aşağıdaki iki örnek, hem durum depolaması hem de yalnızca bellek içi depolama için yerel depolama kullanarak profileSettings nesnesinin nasıl oluşturulacağını göstermektedir.

Profil Yükleme

Artık ProtectionProfileObserverImpl tanımlandığına göre, bunu mip::ProtectionProfile örneğini oluşturmak için kullanacağız. mip::ProtectionProfile nesnesini oluşturmak için mip::ProtectionProfile::Settings gerekir.

Ayar Parametreleri::ProtectionProfile

  • std::shared_ptr<MipContext> mip::MipContext: Uygulama bilgilerini, durum yolunu vb. depolamak için başlatılan nesne.
  • mip::CacheStorageType: Durum bilgisini nasıl depolayacağını tanımlar: Bellekte, diskte veya diskte ve şifrelenmiş olarak.
  • std::shared_ptr<mip::ConsentDelegate>: mip::ConsentDelegate sınıfının paylaşılan işaretçisi.
  • std::shared_ptr<mip::ProtectionProfile::Observer> observer: Profil Observer uygulamasına yönelik paylaşılan işaretçi (PolicyProfile, ProtectionProfile, ve FileProfile içinde).

Aşağıdaki iki örnek, hem durum depolaması hem de yalnızca bellek içi depolama için yerel depolama kullanarak profileSettings nesnesinin nasıl oluşturulacağını göstermektedir.

Durumu yalnızca bellekte depolama

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

ProtectionProfile::Settings profileSettings(
    mMipContext,                                        // mipContext object
    mip::CacheStorageType::InMemory,                   // use in memory storage    
    std::make_shared<ConsentDelegateImpl>(),           // new consent delegate
    std::make_shared<ProtectionProfileObserverImpl>()); // new protection profile observer

Disk üzerindeki depolama yolundan profil ayarlarını okuma/yazma

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

ProtectionProfile::Settings profileSettings(
    mMipContext,                                         // mipContext object
    mip::CacheStorageType::OnDisk,                      // use on disk storage    
    std::make_shared<ConsentDelegateImpl>(),            // new consent delegate
    std::make_shared<ProtectionProfileObserverImpl>()); // new protection profile

Ardından, promise/future kalıbını kullanarak ProtectionProfile yükleyin.

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

Bir profil yüklediysek ve bu işlem başarılı olursa, ProtectionProfileObserverImpl::OnLoadSuccessuygulamamız mip::ProtectionProfile::Observer::OnLoadSuccess olarak adlandırılır. Sonuçta elde edilen nesne veya özel durum işaretçisi ve bağlam işlevine parametre olarak geçirilir. Bağlam, zaman uyumsuz işlemi işlemek için oluşturduğumuz std::promise öğesine bir işaretçidir. işlevi yalnızca ProtectionProfile nesnesine (bağlam) promise değerini ayarlar. Ana işlev kullandığında Future.get(), sonuç yeni bir nesnede depolanabilir.

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

Bir Araya Getirmek

Gözlemcileri ve kimlik doğrulama temsilcisini tam olarak uyguladıktan sonra artık bir profili tam olarak yüklemek mümkündür. Aşağıdaki kod alıntısı, tüm gerekli üst bilgilerin zaten dahil olduğunu varsayar.

int main()
{
    const string userName = "MyTestUser@contoso.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);

    ProtectionProfile::Settings profileSettings(
        mMipContext,                                    // mipContext object
        mip::CacheStorageType::OnDisk,                 // use on disk storage        
        std::make_shared<ConsentDelegateImpl>(),       // new consent delegate
        std::make_shared<ProfileObserver>());          // new protection profile observer

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

Sonuç olarak, profili başarıyla yükledik ve adlı profilenesnede depoladık.

Sonraki Adımlar

Profil eklendikten sonra, bir sonraki adım profile bir motor eklemektir.

Koruma altyapısı kavramları