Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce guide de démarrage rapide vous montre comment utiliser le Kit de développement logiciel (SDK) MIP Protection pour les modèles de protection disponibles pour l’utilisateur.
Prerequisites
Si ce n’est déjà fait, veillez à remplir les conditions préalables suivantes avant de continuer :
- Terminez d'abord le Guide de démarrage rapide - Initialisation de l’application cliente - Kit de développement logiciel (SDK) de protection (C++), qui génère une solution Visual Studio de démarrage. Ce guide de démarrage rapide « Répertorier les modèles de protection » s’appuie sur le précédent pour la création appropriée de la solution de démarrage.
- Si vous le souhaitez , passez en revue les concepts des modèles RMS .
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 moteur de protection.
Ouvrez la solution Visual Studio que vous avez créée dans l’article précédent « Démarrage rapide - Initialisation de l’application cliente - Kit de développement logiciel (SDK) Protection (C++) ».
À l’aide de l’Explorateur de solutions, ouvrez le fichier .cpp dans votre projet qui contient l’implémentation de la
main()méthode. Il a par défaut le même nom que le projet qui le contient, que vous avez spécifié lors de la création du projet.Ajoutez la directive suivante
usingaprèsusing mip::ProtectionEngine;, près du haut du fichier :using std::endl;Vers la fin du
main()corps, sous l’accolade}fermante du derniercatchbloc et au-dessus dereturn 0;(où vous vous êtes arrêté dans le Quickstart précédent), 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 AuthDelegateImpl::AcquireOAuth2Token implémentation. Le script utilise l’applet Get-MsalToken de commande à partir du module MSAL.PS que vous avez installé précédemment, dans « Configuration et configuration du SDK MIP ».
Créez un fichier de script PowerShell (.ps1 extension) et copiez/collez le script suivant dans le fichier :
-
$authorityet$resourceUrlsont mis à jour ultérieurement, dans la section suivante. - Mettez à jour
$appIdet$redirectUri, pour correspondre aux valeurs que vous avez spécifiées dans votre 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 Microsoft Entra app registration $redirectUri = '<redirect-uri>' # Redirect URI of the Microsoft Entra app registration $scope = $resourceUrl + "/.default" $response = Get-MsalToken -ClientId $appId -Authority $authority -RedirectUri $redirectUri -Scopes $scope -Interactive $response.AccessToken | clip # Copy the access token text to the clipboard-
Enregistrez le fichier de script pour pouvoir l’exécuter ultérieurement, lorsque vous le demandez par votre application cliente.
Concevoir et tester l’application
Enfin, générez et testez votre application cliente.
Utilisez Ctrl+Maj+b (Build Solution) pour générer votre application cliente. Si vous n’avez aucune erreur de build, utilisez F5 (Démarrer le débogage) pour exécuter votre application.
Si votre projet génère et s’exécute correctement, l’application demande un jeton d’accès, chaque fois que le SDK appelle votre
AcquireOAuth2Token()méthode. Vous pouvez réutiliser un jeton généré précédemment, si vous y êtes invité plusieurs fois et que les valeurs demandées sont identiques :Pour générer un jeton d’accès pour l’invite, revenez à votre script PowerShell et :
Mettez à jour les variables
$authorityet$resourceUrl. Ils doivent correspondre aux valeurs spécifiées dans la sortie de la console à l’étape 2.Exécutez le script PowerShell. L’applet
Get-MsalTokende commande déclenche une invite d’authentification Microsoft Entra, similaire à l’exemple ci-dessous. Spécifiez le même 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.Acquisition de jeton de connexion dans Visual Studio Vous devrez peut-être également donner votre consentement pour autoriser l’application à accéder aux API MIP, tout en s’exécutant sous le compte de connexion. Cela se produit lorsque l’inscription de l’application Microsoft Entra n’est pas préalablement consentée (comme indiqué dans « Configuration et configuration du SDK MIP ») ou que vous vous connectez avec un compte à partir d’un autre locataire (autre que celui où votre application est inscrite). Cliquez simplement sur Accepter pour enregistrer votre consentement.
Après avoir collé 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 . . .Note
Copiez et enregistrez l’ID d’un ou plusieurs des modèles de protection (par exemple),
f42a3342-8706-4288-bd31-ebb85995028zcar vous l’utiliserez dans le guide de démarrage rapide suivant.
Résolution des problèmes
Problèmes lors de 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/expiré ? Échec de l’appel d’API : profile_add_engine_async Échec avec : [class mip ::P olicySyncException] Échec de l’acquisition de la stratégie, Demande ayant échoué avec le code d’état http : 401, x-ms-diagnostics : [2000001 ; reason="Jeton OAuth envoyé avec la demande ne peut pas être analysé. » ; error_category="invalid_token"], correlationId :[35bc0023-3727-4eff-8062-00006d5d672]' C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (processus 29924) quitté avec le code 0. Appuyez sur n’importe quelle touche pour fermer cette fenêtre. . . |
Si votre projet se génère avec succès, mais que vous voyez un résultat similaire à gauche, vous avez probablement un jeton non valide ou expiré dans la méthode AcquireOAuth2Token() de votre projet. Revenez à créer un script PowerShell pour générer des jetons d’accès et régénérer le jeton d’accès, le mettre à jour AcquireOAuth2Token() à nouveau et regénérer/retester. Vous pouvez également examiner et vérifier le jeton et ses revendications à l’aide de l’application web à page unique jwt.ms. |
Prochaines étapes
Maintenant que vous avez appris à répertorier les modèles de protection disponibles pour un utilisateur authentifié, essayez le guide de démarrage rapide suivant :