Snabbstart: Lista skyddsmallar (C++)

Den här snabbstarten visar hur du använder MIP Protection SDK för att lista skyddsmallar som är tillgängliga för användaren.

Förutsättningar

Slutför följande förutsättningar innan du fortsätter:

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.

  1. Öppna Visual Studio-lösningen som du skapade i föregående artikel "Snabbstart – Initiering av klientprogram – Skydds-SDK (C++)."

  2. I Prieskumník riešení öppnar du filen .cpp 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.

  3. Lägg till följande using direktiv efter using mip::ProtectionEngine;, nära toppen av filen:

    using std::endl;
    
  4. Mot slutet av brödtexten main() , under den avslutande klammerparentesen } för det sista catch blocket och ovan return 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 SDK begär i implementeringen AuthDelegateImpl::AcquireOAuth2Token . Skriptet använder cmdleten Get-MsalToken från MSAL.PS-modulen som du installerade tidigare, i "MIP SDK-konfiguration".

  1. Skapa en PowerShell-skriptfil (.ps1-tillägget) och kopiera och klistra in följande skript i filen:

    • $authority och $resourceUrl uppdateras senare i följande avsnitt.
    • Uppdatera $appId och $redirectUri så att de matchar de värden som du angav i appregistreringen i 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
    
  2. Spara skriptfilen så att du kan köra den senare, när det begärs av klientprogrammet.

Skapa och testa programmet

Skapa och testa klientprogrammet.

  1. Använd Ctrl+Skift+B (bygglösning) för att skapa klientprogrammet. Om versionen inte har några fel använder du F5 (Starta felsökning) för att köra programmet.

  2. Om projektet byggs och körs utan problem uppmanar applikationen dig att ange en åtkomsttoken varje gång SDK:t anropar din AcquireOAuth2Token()-metod. Du kan återanvända en tidigare genererad token om du uppmanas till det flera gånger och de begärda värdena är desamma:

  3. 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-MsalToken utlöser en Microsoft Entra autentiseringsprompt, ungefär som i följande exempel. Ange samma konto som anges i konsolens utdata i steg 2. Efter en lyckad inloggning placerar PowerShell åtkomsttokenen i urklippet.

      Visual Studio hämta tokeninloggning.

    • Du kan också behöva ge medgivande för att programmet ska få åtkomst till MIP-API:erna när 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). Välj Acceptera för att registrera ditt medgivande.

      Visual Studio-samtycke.

  4. När du har klistrat in åtkomsttoken i kommandotolken 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 . . .
    

    Anmärkning

    Kopiera och spara ID:t för en eller flera av skyddsmallarna (till exempel f42a3342-8706-4288-bd31-ebb85995028z), när du använder det 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?

API-anrop misslyckades: profile_add_engine_async Misslyckades med: [class mip::PolicySyncException] Det gick inte att hämta principen, begäran misslyckades med HTTP-statuskod: 401, x-ms-diagnostics: [2000001;reason="OAuth-token som skickades med begäran kan inte tolkas.";error_category="invalid_token"], correlationId:[aaaa0000-bb11-2222-33cc-444444dddddd]'

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 byggs framgångsrikt, men du ser utdata som liknar det till vänster, har du troligtvis 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 saker med hjälp av jwt.ms webbapplikation med en sida.

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: