SDK Microsoft Information Protection - Concepts du profil SDK de protection

Les deux exemples suivants montrent comment créer l’objet profileSettings à l’aide du stockage local uniquement pour le stockage d’état ou la mémoire.

Charger un profil

Maintenant que ProtectionProfileObserverImpl est défini, utilisez-le pour instancier mip::ProtectionProfile. La création de l’objet mip::ProtectionProfile nécessite mip::ProtectionProfile::Settings.

Paramètres de ProtectionProfile::Settings

  • std::shared_ptr<MipContext> mip::MipContext: objet initialisé pour stocker les informations d’application, le chemin d’état et d’autres paramètres.
  • mip::CacheStorageType: définit comment stocker l’état : en mémoire, sur disque ou sur disque et chiffré.
  • std::shared_ptr<mip::ConsentDelegate> : pointeur partagé de classe mip::ConsentDelegate.
  • std::shared_ptr<mip::ProtectionProfile::Observer> observer : pointeur partagé vers l’implémentation du profil Observer (dans PolicyProfile, ProtectionProfile et FileProfile).

Les deux exemples suivants montrent comment créer l’objet profileSettings à l’aide du stockage local uniquement pour le stockage d’état ou la mémoire.

Stocker l’état en mémoire uniquement

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

Lire/écrire les paramètres du profil depuis le chemin de stockage sur le disque

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

Ensuite, utilisez le modèle promesse/avenir pour charger le ProtectionProfile.

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

Si le profil se charge correctement, le SDK appelle ProtectionProfileObserverImpl::OnLoadSuccess, l’implémentation de mip::ProtectionProfile::Observer::OnLoadSuccess. Le Kit de développement logiciel (SDK) transmet l’objet ou le pointeur d’exception résultant et le contexte en tant que paramètres à la fonction. Le contexte est un pointeur vers le std::promise créé pour gérer l’opération asynchrone. La fonction définit la valeur de la promesse à l’objet ProtectionProfile (contexte). Lorsque la fonction principale utilise Future.get(), vous pouvez stocker le résultat dans un nouvel objet.

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

Synthèse

Après avoir implémenté les observateurs et le délégué d’authentification, vous pouvez charger entièrement un profil. L’extrait de code suivant suppose que tous les en-têtes nécessaires sont déjà inclus.

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

Le code charge le profil et le stocke dans l’objet appelé profile.

Étapes suivantes

Maintenant que vous avez chargé le profil, l’étape suivante consiste à ajouter un moteur au profil.

Concepts du moteur de protection