Delen via


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

Het profiel is de hoofdklasse voor alle bewerkingen in de MIP SDK. Voordat u een van de bestands-SDK-functionaliteiten gebruikt, moet u een FileProfile bestand maken en worden alle toekomstige bewerkingen uitgevoerd door het profiel of door andere objecten die aan het profiel zijn toegevoegd .

Er zijn enkele codevereisten waaraan moet worden voldaan voordat u probeert een profiel te instantiëren:

  • MipContext is gemaakt en opgeslagen in een object dat toegankelijk is voor het mip::FileProfile object.
  • ConsentDelegateImpl implementeert mip::ConsentDelegate.
  • De toepassing is geregistreerd in Microsoft Entra-id en de client-id is vastgelegd in de toepassing of configuratiebestanden.
  • Een overnemende mip::FileProfile::Observer klasse is op de juiste wijze geïmplementeerd.

Een profiel laden

Met de ProfileObserver, en ConsentDelegateImpl, gedefinieerd, mip::FileProfile kan nu worden geïnstantieerd. Voor het maken van het mip::FileProfile object is [mip::MipContext] vereist dat mip::FileProfile::Settings alle instellingeninformatie over de FileProfile.

FileProfile::Settings Parameters

De FileProfile::Settings constructor accepteert vijf parameters, die hieronder worden vermeld:

  • 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 en 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

Met het volgende codefragment krijgt u de FileProfile instructie 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

Gebruik een van de bovenstaande benaderingsgegevens en gebruik nu het promise/future-patroon om het FileProfilete laden.

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

Als we een profiel hebben geladen en die bewerking is geslaagd, ProfileObserver::OnLoadSuccesswordt onze implementatie aangeroepen mip::FileProfile::Observer::OnLoadSuccess . De resulterende object- of uitzonderingspointer, evenals de context, worden doorgegeven als parameters aan de functie. De context is een aanwijzer naar de std::promise gemaakte om de asynchrone bewerking te verwerken. Met de functie wordt de waarde van de belofte ingesteld op 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();

Samenbrengen

Nadat u de waarnemers en verificatiedelegen volledig hebt geïmplementeerd, is het nu mogelijk om een profiel volledig te laden. In het onderstaande 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();
}

Het eindresultaat is dat het profiel is geladen en is opgeslagen in het object met de naam profile.

Volgende stappen

Nu het profiel is toegevoegd, is de volgende stap het toevoegen van een engine aan het profiel.