SDK Microsoft Information Protection - Concepts du profil SDK de stratégie

Chargez mip::Profile avant d’effectuer toute opération du SDK Policy.

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

Charger un profil

Après avoir défini MipContext et ProfileObserver, utilisez-les pour instancier mip::PolicyProfile. La création de l’objet mip::PolicyProfile nécessite mip::PolicyProfile::Settings et mip::MipContext.

Profil : paramètres des réglages

Le PolicyProfile::Settings constructeur accepte les quatre paramètres suivants :

  • const std::shared_ptr<MipContext>: L’objet mip::MipContext initialisé pour stocker les informations de l’application, le chemin d’état, etc.
  • mip::CacheStorageType: Définit comment stocker l’état : en mémoire, sur le disque ou sur le disque et chiffré. Pour plus d’informations, consultez les concepts de stockage du cache.
  • std::shared_ptr<mip::PolicyProfile::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 pour le stockage d’état ou en mémoire uniquement.

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>(mAppInfo,
				                                                                                  "mip_data",
                                                                                        		  mip::LogLevel::Trace,
                                                                                                  false);

std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);

PolicyProfile::Settings profileSettings(
    mMipContext,                                  // mipContext object
    mip::CacheStorageType::InMemory,              // use in memory storage
    std::make_shared<PolicyProfileObserverImpl>()); // new protection profile observer

Lire/écrire les paramètres du profil à partir du chemin d'accès au stockage sur le disque

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

PolicyProfile::Settings profileSettings(
    mipContext,                                    // mipContext object
    mip::CacheStorageType::OnDisk,                 // use on disk storage
    std::make_shared<PolicyProfileObserverImpl>());  // new protection profile observer

Ensuite, utilisez le modèle promise/future pour charger le fichier Profile

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

Si l’application charge correctement un profil, ProfileObserver::OnLoadSuccess, l’implémentation de mip::Profile::Observer::OnLoadSuccess, est notifiée. Le SDK transmet l’objet résultant, dans ce cas un mip::Profile, ainsi que le contexte comme paramètres de la fonction d’observation.

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 sur l’objet Profile transmis comme premier paramètre. Lorsque la fonction principale utilise Future.get(), elle peut stocker le résultat dans un nouvel objet dans le thread appelant.

//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>(mAppInfo,
				                                                                                       "mip_data",
                                                                                        			   mip::LogLevel::Trace,
                                                                                                       false);

    std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);

    PolicyProfile::Settings profileSettings(
        mMipContext,                                    // mipContext object
        mip::CacheStorageType::OnDisk,                 // use on disk storage
        std::make_shared<PolicyProfileObserverImpl>());  // new protection profile observer

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

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

Étapes suivantes

Maintenant que le profil est ajouté, l’étape suivante consiste à ajouter un moteur au profil.

Concepts du moteur de stratégie