Microsoft Information Protection SDK - Concepten van bestands-SDK-profielen

Het profiel is de hoofdklasse voor alle bewerkingen in de MIP SDK. Voordat u een File SDK-functionaliteit gebruikt, maakt u een FileProfile. Het profiel of andere objecten die aan het profiel zijn toegevoegd , voeren alle toekomstige bewerkingen uit.

Voldoen aan de volgende codevereisten voordat u een profiel instantieert:

  • MipContext: Maak MipContext en sla het op in een object dat toegankelijk is voor het object mip::FileProfile.
  • Gedelegeerde voor toestemming: ConsentDelegateImpl implementeert mip::ConsentDelegate.
  • Toepassingsregistratie: registreer de toepassing in Microsoft Entra ID en codeer de client-id in de toepassings- of configuratiebestanden.
  • Waarnemer van bestandsprofiel: implementeer een klasse die overneemt mip::FileProfile::Observer.

Een profiel laden

Nadat u hebt gedefinieerd ProfileObserver en ConsentDelegateImpl, kunt u instantiëren mip::FileProfile. Het maken van het mip::FileProfile-object vereist mip::MipContext en mip::FileProfile::Settings, dat alle informatie over de instellingen van de FileProfile opslaat.

FileProfile::Settings parameters

De FileProfile::Settings constructor accepteert de volgende vijf parameters:

  • std::shared_ptr<MipContext>: Het mip::MipContext object dat is geïnitialiseerd voor het opslaan van toepassingsgegevens, het statuspad, enzovoort.
  • mip::CacheStorageType: Definieert hoe de status moet worden opgeslagen: In het geheugen, op schijf of op schijf en versleuteld.
  • std::shared_ptr<mip::ConsentDelegate>: Een gedeelde aanwijzer van klasse mip::ConsentDelegate.
  • std::shared_ptr<mip::FileProfile::Observer> observer: Een gedeelde aanwijzer naar de profiel-implementatie Observer (in PolicyProfile, ProtectionProfileen FileProfile).

In de volgende voorbeelden ziet u hoe u het profileSettings object maakt met behulp van lokale opslag voor statusopslag of alleen in het geheugen.

Alleen de status opslaan in het geheugen

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

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

Profielinstellingen lezen/schrijven vanuit het opslagpad op schijf

Het volgende codefragment geeft de FileProfile opdracht om alle app-statusgegevens op te slaan in ./mip_app_data.

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

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

Het profiel laden

Nadat u een van beide vorige benaderingen hebt gebruikt, gebruikt u het promise/future-patroon om de FileProfile te laden.

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

Als de applicatie met succes een profiel laadt, wordt ProfileObserver::OnLoadSuccess, de implementatie van mip::FileProfile::Observer::OnLoadSuccess, aangeroepen. De SDK geeft het resulterende object of de uitzonderingswijzer en de context als parameters door aan de functie. De context is een verwijzing naar de std::promise die is gemaakt om de asynchrone bewerking af te handelen. De functie stelt de waarde van de promise in voor het FileProfile-object dat is doorgegeven voor de eerste parameter. Wanneer de hoofdfunctie wordt gebruikt Future.get(), kan het resultaat worden opgeslagen in een nieuw object.

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

Alles samenbrengen

Nadat u de observers en authenticatiedelegate hebt geïmplementeerd, kunt u een profiel volledig laden. In het volgende codefragment wordt ervan uitgegaan dat alle benodigde headers al zijn opgenomen.

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

    FileProfile::Settings profileSettings(
        mMipContext,                                   // MipContext object
        mip::CacheStorageType::OnDisk,                 // use on disk storage        
        std::make_shared<ConsentDelegateImpl>(),       // new consent delegate
        std::make_shared<FileProfileObserverImpl>());  // new file profile observer

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

De code laadt het profiel en slaat het op in het object met de naam profile.

Volgende stappen 

Nu het profiel is toegevoegd, is de volgende stap om een motor aan het profiel toe te voegen.