Dela via


Microsoft Information Protection SDK – Fil-SDK-profilbegrepp

Profilen är rotklassen för alla åtgärder i MIP SDK. Innan du använder någon av File SDK-funktionerna måste du skapa en FileProfile och alla framtida åtgärder utförs av profilen eller av andra objekt som läggs till i profilen.

Det finns några kodkrav som bör uppfyllas innan du försöker instansiera en profil:

  • MipContext har skapats och lagrats i ett objekt som är tillgängligt för objektet mip::FileProfile .
  • ConsentDelegateImpl implementerar mip::ConsentDelegate.
  • Programmet har registrerats i Microsoft Entra-ID och klient-ID:t är hårdkodat i programmet eller konfigurationsfilerna.
  • En klass som mip::FileProfile::Observer ärver har implementerats på rätt sätt.

Läsa in en profil

Med , ProfileObserveroch ConsentDelegateImpl, definierad, mip::FileProfile kan nu instansieras. För att skapa mip::FileProfile objektet måste [mip::MipContext] ha och mip::FileProfile::Settings lagra all inställningsinformation om FileProfile.

FileProfile::Inställningar Parameters

Konstruktorn FileProfile::Settings accepterar fem parametrar som anges nedan:

  • std::shared_ptr<MipContext>: Objektet mip::MipContext som initierades för att lagra programinformation, tillståndssökväg osv.
  • mip::CacheStorageType: Definierar hur du lagrar tillstånd: I minne, på disk eller på disk och krypterad.
  • std::shared_ptr<mip::ConsentDelegate>: En delad pekare för klassen mip::ConsentDelegate.
  • std::shared_ptr<mip::FileProfile::Observer> observer: En delad pekare till profilimplementeringen Observer (i PolicyProfile, ProtectionProfileoch FileProfile).

I följande exempel visas hur du skapar profileSettings objektet med hjälp av lokal lagring för tillståndslagring och endast minnesinternt.

Lagra endast tillstånd i minnet

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

Läs-/skrivprofilinställningar från lagringssökväg på disk

Följande kodfragment instruerar FileProfile att lagra alla apptillståndsdata i ./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

Läs in profilen

Använd nu mönstret promise/future för att läsa in FileProfile.

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

Om vi har läst in en profil och åtgärden lyckades ProfileObserver::OnLoadSuccessanropas vår implementering av mip::FileProfile::Observer::OnLoadSuccess . Det resulterande objektet eller undantagspekaren samt kontexten skickas som parametrar till funktionen. Kontexten är en pekare till den std::promise vi skapade för att hantera asynkroniseringsåtgärden. Funktionen anger helt enkelt värdet för löftet till FileProfile-objektet som skickades in för den första parametern. När huvudfunktionen använder Future.get()kan resultatet lagras i ett nytt objekt.

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

Sätta ihop den

Efter att ha implementerat observatörerna och autentiseringsdelegaten är det nu möjligt att läsa in en profil fullt ut. Kodfragmentet nedan förutsätter att alla nödvändiga rubriker redan ingår.

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

Slutresultatet är att vi har läst in profilen och lagrat i objektet med namnet profile.

Nästa steg

Nu när profilen har lagts till är nästa steg att lägga till en motor i profilen.