Snabbstart: Lista skyddsmallar (C++)
Den här snabbstarten visar hur du använder MIP Protection SDK för att skydda mallar som är tillgängliga för användaren.
Förutsättningar
Om du inte redan har gjort det måste du slutföra följande krav innan du fortsätter:
- Slutför snabbstart – Initiering av klientprogram – Protection SDK (C++) först, som skapar en Visual Studio-startlösning. Den här snabbstarten "Listskyddsmallar" förlitar sig på den föregående för att startlösningen ska kunna skapas korrekt.
- Alternativt: Granska begreppen för RMS-mallar .
Lägg till logik för att lista skyddsmallarna
Lägg till logik för att lista skyddsmallar som är tillgängliga för en användare med hjälp av objektet Skyddsmotor.
Öppna Visual Studio-lösningen som du skapade i föregående artikel "Snabbstart – Initiering av klientprogram – Skydds-SDK (C++)."
Använd Solution Explorer och öppna .cpp-filen i projektet som innehåller implementeringen av
main()
metoden. Det är som standard samma namn som det projekt som innehåller det, som du angav när projektet skapades.Lägg till följande
using
direktiv efterusing mip::ProtectionEngine;
, nära toppen av filen:using std::endl;
Mot slutet av brödtexten
main()
, under den avslutande klammerparentesen}
för det sistacatch
blocket och ovanreturn 0;
(där du slutade i föregående snabbstart), infogar du följande kod:// 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; }
Skapa ett PowerShell-skript för att generera åtkomsttoken
Använd följande PowerShell-skript för att generera åtkomsttoken, som begärs av SDK:et i implementeringen AuthDelegateImpl::AcquireOAuth2Token
. Skriptet använder cmdleten Get-ADALToken
från modulen ADAL.PS som du installerade tidigare, i "MIP SDK Setup and configuration".
Skapa en PowerShell-skriptfil (.ps1-tillägget) och kopiera/klistra in följande skript i filen:
$authority
och$resourceUrl
uppdateras senare i följande avsnitt.- Uppdatera
$appId
och$redirectUri
, för att matcha de värden som du angav i din Microsoft Entra-appregistrering.
$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
Spara skriptfilen så att du kan köra den senare, när det begärs av klientprogrammet.
Skapa och testa programmet
Skapa och testa slutligen klientprogrammet.
Använd Ctrl+Skift+b (Bygglösning) för att skapa klientprogrammet. Om du inte har några byggfel använder du F5 (Starta felsökning) för att köra programmet.
Om projektet har skapats och körts frågar programmet efter en åtkomsttoken varje gång SDK:t anropar din
AcquireOAuth2Token()
metod. Du kan återanvända en tidigare genererad token om du uppmanas att göra det flera gånger och de begärda värdena är desamma:Om du vill generera en åtkomsttoken för prompten går du tillbaka till ditt PowerShell-skript och:
Uppdatera variablerna
$authority
och$resourceUrl
. De måste matcha de värden som anges i konsolens utdata i steg 2.Kör PowerShell-skriptet. Cmdleten
Get-ADALToken
utlöser en Microsoft Entra-autentiseringsprompt, liknande exemplet nedan. Ange samma konto som anges i konsolens utdata i steg 2. Efter lyckad inloggning placeras åtkomsttoken i Urklipp.Du kan också behöva ge medgivande för att programmet ska få åtkomst till MIP-API:erna medan det körs under inloggningskontot. Detta inträffar när Microsoft Entra-programregistreringen inte har godkänts i förväg (enligt beskrivningen i "MIP SDK-konfiguration" eller om du loggar in med ett konto från en annan klientorganisation (förutom den där ditt program är registrerat). Klicka bara på Acceptera för att registrera ditt medgivande.
När du har klistrat in åtkomsttoken i prompten från steg 2 bör konsolens utdata visa skyddsmallarna , ungefär som i följande exempel:
*** 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 . . .
Kommentar
Kopiera och spara ID:t för en eller flera av skyddsmallarna (till exempel
f42a3342-8706-4288-bd31-ebb85995028z
), som du kommer att använda i nästa snabbstart.
Felsökning
Problem vid körning av C++-program
Sammanfattning | Felmeddelande | Lösning |
---|---|---|
Felaktig åtkomsttoken | Ett undantag inträffade... är åtkomsttoken felaktig/har upphört att gälla? Misslyckat API-anrop: profile_add_engine_async Misslyckades med: [class mip::P olicySyncException] Det gick inte att hämta principen, Begäran misslyckades med http-statuskoden: 401, x-ms-diagnostics: [2000001; reason="OAuth-token som skickas med begäran kan inte parsas."; error_category="invalid_token"], correlationId:[35bc0023-3727-4eff-8062-000006d5d672]' C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (process 29924) avslutades med kod 0. Tryck på valfri tangent för att stänga det här fönstret . . . |
Om projektet har skapats, men du ser utdata som liknar det vänstra, har du förmodligen en ogiltig eller förfallen token i din AcquireOAuth2Token() metod. Gå tillbaka till Skapa ett PowerShell-skript för att generera åtkomsttoken och återskapa åtkomsttoken, uppdatera AcquireOAuth2Token() igen och återskapa/testa igen. Du kan också undersöka och verifiera token och dess anspråk med hjälp av jwt.ms ensideswebbapp. |
Nästa steg
Nu när du har lärt dig hur du listar de skyddsmallar som är tillgängliga för en autentiserad användare kan du prova nästa snabbstart:
[Kryptera och dekryptera text] (quick-protection-encrypt-decrypt text-cpp.md)