SDK Microsoft Information Protection - Concepts du profil SDK de fichier

Le profil est la classe racine de toutes les opérations dans le kit de développement logiciel (SDK) MIP. Avant d’utiliser n’importe quelle fonctionnalité du Kit de développement logiciel (SDK) de fichier, créez un FileProfile. Le profil ou d’autres objets ajoutés au profil effectuent toutes les opérations futures.

Remplissez les conditions préalables au code suivantes avant d’instancier un profil :

  • MipContext : créez MipContext et stockez-le dans un objet accessible à l’objet mip::FileProfile .
  • Délégué de consentement : ConsentDelegateImpl implémente mip::ConsentDelegate.
  • Inscription de l’application : inscrivez l’application dans Microsoft Entra ID et codez en dur l’ID client dans les fichiers d’application ou de configuration.
  • Observateur de profil de fichier : implémentez une classe qui hérite mip::FileProfile::Observer.

Charger un profil

Après avoir défini ProfileObserver et ConsentDelegateImpl, vous pouvez instancier mip::FileProfile. La création de l’objet mip::FileProfile nécessite mip::MipContext et mip::FileProfile::Settingsstocke toutes les informations de paramètres sur le FileProfile.

Paramètres de FileProfile::Settings

Le FileProfile::Settings constructeur accepte les cinq paramètres suivants :

  • 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é.
  • std::shared_ptr<mip::ConsentDelegate> : pointeur partagé de classe mip::ConsentDelegate.
  • std::shared_ptr<mip::FileProfile::Observer> observer : pointeur partagé vers l’implémentation du profil Observer (dans PolicyProfile, ProtectionProfile et FileProfile).

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

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

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

L’extrait de code suivant indique à stocker FileProfile toutes les données d’état de l’application dans ./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

Charger le profil

Une fois que vous avez utilisé l’une ou l’autre approche précédente, utilisez le modèle promesse/futur pour charger le FileProfile.

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

Si l’application charge correctement un profil, ProfileObserver::OnLoadSuccess l’implémentation de mip::FileProfile::Observer::OnLoadSuccess, est appelée. Le Kit de développement logiciel (SDK) transmet l’objet ou le pointeur d’exception résultant, ainsi que 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 FileProfile transmis pour le premier paramètre. Lorsque la fonction principale utilise Future.get(), elle peut 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>(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();
}

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.