Microsoft Information Protection SDK – Koncepty profilů souborových sad SDK

Profil je kořenová třída pro všechny operace v sadě Software Development Kit (SDK) MIP. Před použitím jakékoli funkce sady File SDK vytvořte FileProfile. Profil nebo jiné objekty přidané do profilu provádějí všechny budoucí operace.

Před vytvořením instance profilu splníte následující požadavky na kód:

  • MipContext: Vytvořte MipContext a uložte jej v objektu, který je přístupný objektu mip::FileProfile.
  • Delegát souhlasu: ConsentDelegateImpl implementuje mip::ConsentDelegate.
  • Registrace aplikace: Zaregistrujte aplikaci v Microsoft Entra ID a pevně zakódujte ID klienta do aplikace nebo konfiguračních souborů.
  • Pozorovatel profilu souboru: Implementujte třídu, která dědí mip::FileProfile::Observer.

Načtení profilu

Po definování ProfileObserver a ConsentDelegateImplmůžete vytvořit instanci mip::FileProfile. Vytvoření objektu mip::FileProfile vyžaduje mip::MipContext a mip::FileProfile::Settings, který ukládá všechny informace o nastavení o objektu FileProfile.

FileProfile::Settings parametry

Konstruktor FileProfile::Settings přijímá následující pět parametrů:

  • std::shared_ptr<MipContext>: Objekt mip::MipContext inicializovaný pro uložení informací o aplikaci, cesty stavu atd.
  • mip::CacheStorageType: Definuje, jak uložit stav: V paměti, na disku nebo na disku a zašifrováno.
  • std::shared_ptr<mip::ConsentDelegate>: Sdílený ukazatel třídy mip::ConsentDelegate.
  • std::shared_ptr<mip::FileProfile::Observer> observer: Sdílený ukazatel na implementaci profilu Observer (v PolicyProfile, ProtectionProfile, a FileProfile).

Následující příklady ukazují, jak vytvořit profileSettings objekt pomocí místního úložiště pro úložiště stavu nebo pouze v paměti.

Uložení stavu pouze v paměti

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

Načíst/uložit nastavení profilu z úložné cesty na disku

Následující fragment kódu dává pokyn FileProfile k uložení všech dat o stavu aplikace do ./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

Načtení profilu

Po použití kteréhokoli z předchozích postupů načtěte FileProfile pomocí vzorce promise/future.

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

Pokud aplikace úspěšně načte profil, ProfileObserver::OnLoadSuccess je zavolána implementace mip::FileProfile::Observer::OnLoadSuccess. Sada SDK předá výsledný objekt nebo ukazatel výjimky a kontext jako parametry do funkce. Kontext je ukazatel na std::promise, který byl vytvořen ke zpracování asynchronní operace. Funkce nastaví hodnotu promise na objekt FileProfile předaný jako první parametr. Při použití Future.get()hlavní funkce může výsledek uložit do nového objektu.

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

Dáváme to dohromady

Po implementaci pozorovatelů a delegáta autentizace můžete načíst profil v plném rozsahu. Následující fragment kódu předpokládá, že jsou už zahrnuté všechny potřebné hlavičky.

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

Kód načte profil a uloží ho do objektu s názvem profile.

Další kroky

Nyní, když byl profil přidán, dalším krokem je přidat do profilu engine.