Microsoft Information Protection SDK — koncepcje dotyczące profilu SDK ochrony

Poniższe dwa przykłady pokazują, jak utworzyć obiekt profileSettings, używając pamięci lokalnej do przechowywania stanu lub wyłącznie pamięci.

Ładowanie profilu

Teraz, gdy ProtectionProfileObserverImpl zostało zdefiniowane, użyj go do utworzenia instancji mip::ProtectionProfile. mip::ProtectionProfile Utworzenie obiektu wymaga elementu mip::ProtectionProfile::Settings.

ProtectionProfile::Settings parameters

  • std::shared_ptr<MipContext> mip::MipContext: obiekt zainicjowany do przechowywania informacji o aplikacji, ścieżki stanu i innych ustawień.
  • mip::CacheStorageType: Definiuje sposób przechowywania stanu: w pamięci, na dysku lub na dysku w postaci zaszyfrowanej.
  • std::shared_ptr<mip::ConsentDelegate>: współużytkowany wskaźnik klasy mip::ConsentDelegate.
  • std::shared_ptr<mip::ProtectionProfile::Observer> observer: współdzielony wskaźnik do implementacji profilu Observer (w systemach PolicyProfile, ProtectionProfile i FileProfile).

W poniższych dwóch przykładach pokazano, jak utworzyć obiekt profileSettings, używając pamięci lokalnej do przechowywania stanu lub wyłącznie pamięci.

Przechowywanie stanu tylko w pamięci

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

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

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

Ustawienia profilu do odczytu i zapisu z lokalizacji magazynowania na dysku

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

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

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

Następnie użyj wzorca promise/future, aby załadować element ProtectionProfile.

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

Jeśli profil zostanie pomyślnie załadowany, SDK wywołuje ProtectionProfileObserverImpl::OnLoadSuccess, implementację mip::ProtectionProfile::Observer::OnLoadSuccess. Zestaw SDK przekazuje wynikowy obiekt lub wskaźnik wyjątku oraz kontekst jako parametry funkcji. Kontekst jest wskaźnikiem do elementu std::promise, utworzonego w celu obsługi operacji asynchronicznej. Funkcja ustawia wartość obietnicy na obiekt ProtectionProfile (kontekst). Gdy funkcja `main` używa Future.get(), można zapisać wynik w nowym obiekcie.

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

Składanie całości

Po zaimplementowaniu obserwatorów i delegata uwierzytelniania można w pełni załadować profil. Poniższy fragment kodu zakłada, że wszystkie niezbędne nagłówki są już uwzględnione.

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>(appInfo,
				                                                                                       "mip_data",
                                                                                        			   mip::LogLevel::Trace,
                                                                                                       false, mip::CacheStorageType::OnDisk);

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

Kod ładuje profil i przechowuje go w obiekcie o nazwie profile.

Następne kroki

Teraz, po załadowaniu profilu, następnym krokiem jest dodanie silnika do tego profilu.

Pojęcia dotyczące silnika ochrony