Partager via


Démarrage rapide : Lister les modèles de protection (C++)

Ce guide de démarrage rapide explique comment utiliser le SDK Protection MIP, pour les modèles de protection disponibles.

Prérequis

Si ce n’est déjà fait, veillez à satisfaire les prérequis suivants avant de poursuivre :

Ajouter une logique pour répertorier les modèles de protection

Ajoutez une logique pour répertorier les modèles de protection disponibles pour un utilisateur, à l’aide de l’objet du moteur de protection.

  1. Ouvrez la solution Visual Studio que vous avez créée dans l’article précédent, « Démarrage rapide : Initialisation de l’application cliente - SDK Protection (C++) ».

  2. À l’aide de l’Explorateur de solutions, ouvrez le fichier .cpp dans votre projet qui contient l’implémentation de la méthode main(). Par défaut, il a le même nom que le projet qui le contient et que vous avez spécifié lors de la création du projet.

  3. Ajoutez l’instruction using suivante après using mip::ProtectionEngine;, en haut du fichier :

    using std::endl;
    
  4. Vers la fin du corps main(), en dessous de l’accolade fermante } du dernier bloc catch et au-dessus de return 0; (là où vous vous êtes arrêté dans le précédent Démarrage rapide), insérez le code suivant :

     // List protection templates
     const shared_ptr<ProtectionEngineObserver> engineObserver = std::make_shared<ProtectionEngineObserver>();
     // Create a context to pass to 'ProtectionEngine::GetTemplateListAsync'. That context will be forwarded to the
     // corresponding ProtectionEngine::Observer methods. In this case, we use promises/futures as a simple way to detect
     // the async operation completes synchronously.
     auto loadPromise = std::make_shared<std::promise<vector<shared_ptr<mip::TemplateDescriptor>>>>();
     std::future<vector<shared_ptr<mip::TemplateDescriptor>>> loadFuture = loadPromise->get_future();
     engine->GetTemplatesAsync(engineObserver, loadPromise);
     auto templates = loadFuture.get();
    
     cout << "*** Template List: " << endl;
    
     for (const auto& protectionTemplate : templates) {
         cout << "Name: " << protectionTemplate->GetName() << " : " << protectionTemplate->GetId() << endl;
     }
    
    

Créer un script PowerShell pour générer des jetons d’accès

Utilisez le script PowerShell suivant pour générer des jetons d’accès, qui sont demandés par le kit de développement logiciel (SDK) dans votre implémentation AuthDelegateImpl::AcquireOAuth2Token. Le script utilise la cmdlet Get-ADALToken du module ADAL.PS que vous avez installé précédemment, dans « installation et configuration du kit de développement logiciel (SDK) MIP ».

  1. Créez un fichier de script PowerShell (extension .ps1), puis copiez/collez le script suivant dans le fichier :

    • $authority et $resourceUrl seront mis à jour plus tard, dans la section suivante.
    • Mettez à jour $appId et $redirectUri, de façon à ce qu’ils correspondent aux valeurs que vous avez spécifiées lors de l’inscription d’application Microsoft Entra.
    $authority = '<authority-url>'                   # Specified when SDK calls AcquireOAuth2Token()
    $resourceUrl = '<resource-url>'                  # Specified when SDK calls AcquireOAuth2Token()
    $appId = '<app-ID>'                              # App ID of the Azure AD app registration
    $redirectUri = '<redirect-uri>'                  # Redirect URI of the Azure AD app registration
    $response = Get-ADALToken -Resource $resourceUrl -ClientId $appId -RedirectUri $redirectUri -Authority $authority -PromptBehavior:RefreshSession
    $response.AccessToken | clip                     # Copy the access token text to the clipboard
    
  2. Enregistrez le fichier de script afin de pouvoir l’exécuter ultérieurement, lorsque cela est exigé par votre application cliente.

Concevoir et tester l’application

Enfin, générez et testez votre application cliente.

  1. Utilisez Ctrl+Maj+B (Créer une solution) pour créer votre application cliente. Si vous n’avez aucune erreur de build, utilisez F5 (Démarrer le débogage) pour exécuter votre application.

  2. Si votre projet est généré et exécuté correctement, l’application demande un jeton d’accès chaque fois que le kit de développement logiciel (SDK) appelle votre méthode AcquireOAuth2Token(). Vous pouvez réutiliser un jeton précédemment généré si vous y êtes invité plusieurs fois et que les valeurs demandées sont identiques :

  3. Pour générer un jeton d’accès pour l’invite, revenez à votre script PowerShell et :

    • Mettez à jour les variables $authority et $resourceUrl. Celles-ci doivent correspondre aux valeurs spécifiées dans la sortie de la console à l’étape 2.

    • Exécutez le script PowerShell. La cmdlet Get-ADALToken déclenche une invite d’authentification Microsoft Entra, comme dans l’exemple ci-dessous. Spécifiez le compte fourni dans la sortie de la console à l’étape 2. Une fois la connexion réussie, le jeton d’accès est placé dans le Presse-papiers.

      Visual Studio acquire token sign-in

    • Vous devrez peut-être également donner votre consentement afin d’autoriser l’application à accéder aux API MIP, sous le compte de connexion. Cela se produit lorsque l’inscription d’application Microsoft Entra n’est pas préconsentie (tel que décrit dans « Installation et configuration du Kit de développement logiciel (SDK) MIP »), ou lorsque vous vous connectez avec le compte d’un autre locataire (autre que celui dans lequel votre application est inscrite). Cliquez simplement sur Accepter pour enregistrer votre consentement.

      Visual Studio consent

  4. Après avoir passé le jeton d’accès dans l’invite à partir de l’étape 2, la sortie de votre console doit afficher les modèles de protection, comme dans l’exemple suivant :

    *** Template List:
    Name: Confidential \ All Employees : a74f5027-f3e3-4c55-abcd-74c2ee41b607
    Name: Highly Confidential \ All Employees : bb7ed207-046a-4caf-9826-647cff56b990
    Name: Confidential : 174bc02a-6e22-4cf2-9309-cb3d47142b05
    Name: Contoso Employees Only : 667466bf-a01b-4b0a-8bbf-a79a3d96f720
    
    C:\MIP Sample Apps\ProtectionQS\Debug\ProtectionQS.exe (process 8252) exited with code 0.
    To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stops.
    
    Press any key to continue . . .
    

    Remarque

    Copiez et enregistrez l’ID d’un ou de plusieurs modèles de protection (par exemple, f42a3342-8706-4288-bd31-ebb85995028z), car vous l’utiliserez dans le prochain Démarrage rapide.

Dépannage

Problèmes pendant l’exécution de l’application C++

Résumé Message d’erreur Solution
Jeton d'accès incorrect Une exception s’est produite... Le jeton d’accès est-il incorrect ou expiré ?

Échec de l’appel d’API : profile_add_engine_async Failed avec : [class mip::PolicySyncException] Échec de la récupération de la stratégie, Échec de la requête avec le code de statut HTTP : 401, x-ms-diagnostics: [2000001;reason="OAuth token submitted with the request cannot be parsed.";error_category="invalid_token"], correlationId:[35bc0023-3727-4eff-8062-000006d5d672]'

C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (processus 29924) s’est fermé avec le code 0.

Appuyez sur une touche pour fermer cette fenêtre. . .
Si votre projet est correctement généré, mais que la sortie est similaire à l’exemple à gauche, il est probable que votre méthode AcquireOAuth2Token() soit invalide et ait expiré. Revenez à Créer un script PowerShell pour générer des jetons d’accès, regénérez le jeton d’accès, mettez AcquireOAuth2Token() à jour une nouvelle fois, puis regénérez ou retestez. Vous pouvez également examiner et vérifier le jeton et ses revendications, à l’aide de l’application web jwt.ms d’une seule page.

Étapes suivantes

Maintenant que vous avez appris à lister les modèles de protection disponibles pour un utilisateur authentifié, essayez le guide de démarrage rapide suivant :

[Chiffrer et déchiffrer du texte](quick-protection-encrypt-decrypt text-cpp.md)