Úvod: Seznam šablon ochrany (C++)

V tomto rychlém startu se dozvíte, jak používat sadu MIP Protection SDK k ochraně šablon dostupných pro uživatele.

Požadavky

Pokud jste to ještě neudělali, nezapomeňte před pokračováním dokončit následující požadavky:

Přidat logiku pro výpis šablon ochrany

Přidejte logiku k výpisu šablon ochrany, které jsou uživateli k dispozici, pomocí objektu modulu ochrany.

  1. Otevřete řešení sady Visual Studio, které jste vytvořili v předchozím článku Rychlý start – Inicializace klientské aplikace – Protection SDK (C++).

  2. Pomocí Průzkumníka řešení otevřete soubor .cpp v projektu, který obsahuje implementaci main() metody. V rámci výchozího nastavení se použije stejný název jako projekt, který ho obsahuje a který jste zadali při vytváření projektu.

  3. Přidejte následující using direktivu za using mip::ProtectionEngine;, v horní části souboru:

    using std::endl;
    
  4. Ke konci main() těla, pod uzavírací složenou závorkou } posledního catch bloku a nad return 0; (kde jste skončili v předchozím Quickstartu), vložte následující kód:

     // 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;
     }
    
    

Vytvoření skriptu PowerShellu pro generování přístupových tokenů

Pomocí následujícího skriptu PowerShellu vygenerujte přístupové tokeny, které sada SDK požaduje ve vaší AuthDelegateImpl::AcquireOAuth2Token implementaci. Skript používá rutinu Get-MsalToken z modulu MSAL.PS, který jste nainstalovali dříve, v části Nastavení a konfigurace sady MIP SDK.

  1. Vytvořte soubor powershellového skriptu (.ps1 příponu) a zkopírujte nebo vložte do souboru následující skript:

    • $authority a $resourceUrl aktualizují se později v následující části.
    • Aktualizujte $appId a $redirectUri, aby odpovídaly hodnotám, které jste zadali v registraci aplikace 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. Uložte soubor skriptu, abyste ho mohli spustit později, když to vyžaduje klientská aplikace.

Sestavení a otestování aplikace

Nakonec sestavte a otestujte klientskou aplikaci.

  1. K sestavení klientské aplikace použijte kombinaci kláves Ctrl+Shift+b (Řešení sestavení). Pokud nemáte žádné chyby sestavení, spusťte aplikaci pomocí klávesy F5 (spustit ladění).

  2. Pokud se projekt sestaví a úspěšně spustí, aplikace vyzve k zadání přístupového tokenu pokaždé, když sada SDK volá vaši AcquireOAuth2Token() metodu. Pokud se zobrazí výzva vícekrát, můžete znovu použít dříve vygenerovaný token a požadované hodnoty jsou stejné:

  3. Pokud chcete vygenerovat přístupový token pro výzvu, vraťte se do skriptu PowerShellu a proveďte následující:

    • Aktualizujte proměnné $authority a $resourceUrl. Musí odpovídat hodnotám zadaným ve výstupu konzoly v kroku 2.

    • Spusťte skript PowerShellu. Cmdlet Get-MsalToken aktivuje přihlašovací výzvu k ověření Microsoft Entra, podobně jako v následujícím příkladu. Zadejte stejný účet, který jste zadali ve výstupu konzoly v kroku 2. Po úspěšném přihlášení se přístupový token umístí do schránky.

      Přihlášení pomocí tokenu ve Visual Studio

    • Možná budete muset udělit souhlas, abyste aplikaci umožnili přístup k rozhraním API MIP při spuštění pod přihlašovacím účtem. K tomu dochází v případě, že registrace aplikace Microsoft Entra není předem odsouhlasována (jak je uvedeno v nastavení a konfiguraci sady MIP SDK), nebo se přihlašujete pomocí účtu z jiného tenanta (jiného než registrace vaší aplikace). Jednoduše klikněte na Přijmout a poznamenejte si svůj souhlas.

      Souhlas sady Visual Studio

  4. Po vložení přístupového tokenu do výzvy z kroku 2 by se ve výstupu konzoly měly zobrazit šablony ochrany, podobně jako v následujícím příkladu:

    *** 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 . . .
    

    Poznámka:

    Zkopírujte a uložte ID jedné nebo více šablon ochrany (například f42a3342-8706-4288-bd31-ebb85995028z), protože ho použijete v dalším rychlém startu.

Řešení problémů

Problémy při provádění aplikace jazyka C++

Shrnutí Zpráva o chybě Řešení
Chybný přístupový token Došlo k výjimce... je přístupový token nesprávný nebo vypršela jeho platnost?

Neúspěšné volání rozhraní API: profile_add_engine_async Selhalo s: [class mip::PolicySyncException] Nepodařilo se získat politiku, požadavek selhal se status kódem HTTP: 401, x-ms-diagnostics: [2000001; reason="Token OAuth odeslaný s žádostí nelze analyzovat."; error_category="invalid_token"], correlationId:[35bc0023-3727-4eff-8062-000006d5d672]

C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (proces 29924) se ukončil s kódem 0.

Stisknutím libovolné klávesy zavřete toto okno . . .
Pokud se projekt úspěšně sestaví, ale zobrazí se výstup podobný levé straně, pravděpodobně máte ve své AcquireOAuth2Token() metodě neplatný token nebo token s vypršenou platností. Vraťte se k vytvoření skriptu PowerShell pro generování přístupových tokenů, opětovně vygenerujte přístupový token, znovu aktualizujte AcquireOAuth2Token() a poté znovu sestavte nebo otestujte. Token a jeho deklarace identity můžete také prozkoumat a ověřit pomocí jwt.ms jednostrákové webové aplikace.

Další kroky

Teď, když jste se dozvěděli, jak zobrazit seznam šablon ochrany dostupných ověřeným uživatelům, vyzkoušejte následující rychlý start: