Schnellstart: Listenschutzvorlagen (C++)

In dieser Schnellstartanleitung erfahren Sie, wie Sie mithilfe des MIP Protection SDK Schutzvorlagen auflisten, die für den Benutzer verfügbar sind.

Voraussetzungen

Führen Sie die folgenden Voraussetzungen aus, bevor Sie fortfahren:

Hinzufügen von Logik zum Auflisten der Schutzvorlagen

Fügen Sie mithilfe des Protection-Modulobjekts Logik zu Listenschutzvorlagen hinzu, die einem Benutzer zur Verfügung stehen.

  1. Öffnen Sie die Visual Studio-Lösung, die Sie im vorherigen Artikel "Schnellstart – Clientanwendungsinitialisierung – Protection SDK (C++)" erstellt haben.

  2. Öffnen Sie in Projektmappen-Explorer die datei .cpp in Ihrem Projekt, die die Implementierung der main() Methode enthält. Standardmäßig wird derselbe Name wie das Projekt verwendet, das es enthält, das Sie während der Projekterstellung angegeben haben.

  3. Fügen Sie die folgende using-Direktive nach using mip::ProtectionEngine;, nahe dem Anfang der Datei, hinzu.

    using std::endl;
    
  4. Fügen Sie gegen Ende des main()Hauptteils unterhalb der schließenden Klammer } des letzten catch-Blocks und oberhalb von return 0; (wo Sie im vorherigen Schnellstart aufgehört haben) den folgenden Code ein:

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

Erstellen eines PowerShell-Skripts zum Generieren von Zugriffstoken

Verwenden Sie das folgende PowerShell-Skript, um Zugriffstoken zu generieren, die das SDK in Ihrer AuthDelegateImpl::AcquireOAuth2Token Implementierung anfordert. Das Skript verwendet das Get-MsalToken Cmdlet aus dem MSAL.PS-Modul, das Sie zuvor unter „MIP SDK setup and configuration“ installiert haben.

  1. Erstellen Sie eine PowerShell-Skriptdatei (.ps1 Erweiterung), und kopieren Sie das folgende Skript, und fügen Sie es in die Datei ein:

    • $authority und $resourceUrl werden später im folgenden Abschnitt aktualisiert.
    • Aktualisieren Sie $appId und $redirectUri so, dass sie den Werten entsprechen, die Sie in Ihrer Microsoft Entra-App-Registrierung angegeben haben.
    $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. Speichern Sie die Skriptdatei, damit Sie sie später ausführen können, wenn sie von Ihrer Clientanwendung angefordert wird.

Erstellen und Testen der Anwendung

Erstellen und testen Sie Ihre Clientanwendung.

  1. Drücken Sie STRG+UMSCHALT+B (Projektmappe erstellen), um Ihre Clientanwendung zu erstellen. Wenn der Build keine Fehler aufweist, verwenden Sie F5 (Debuggen starten), um Ihre Anwendung auszuführen.

  2. Wenn Ihr Projekt erfolgreich erstellt und ausgeführt wird, fordert die Anwendung jedes Mal, wenn das SDK Ihre AcquireOAuth2Token() Methode aufruft, ein Zugriffstoken ein. Sie können ein zuvor generiertes Token wiederverwenden, wenn Sie mehrmals dazu aufgefordert werden, und die angeforderten Werte sind identisch:

  3. Um ein Zugriffstoken für die Eingabeaufforderung zu generieren, wechseln Sie zurück zu Ihrem PowerShell-Skript und:

    • Aktualisieren Sie die Variablen $authority und $resourceUrl. Sie müssen mit den werten übereinstimmen, die in der Konsolenausgabe in Schritt 2 angegeben sind.

    • Führen Sie das PowerShell-Skript aus. Das Get-MsalToken Cmdlet löst eine Microsoft Entra Authentifizierungsaufforderung aus, ähnlich dem folgenden Beispiel. Geben Sie dasselbe Konto an, das in der Konsolenausgabe in Schritt 2 bereitgestellt wird. Nach erfolgreicher Anmeldung platziert PowerShell das Zugriffstoken in der Zwischenablage.

      Visual Studio-Anmeldung zum Erhalten des Tokens.

    • Möglicherweise müssen Sie auch die Zustimmung erteilen, damit die Anwendung auf die MIP-APIs zugreifen kann, während sie unter dem Anmeldekonto ausgeführt wird. Dies geschieht, wenn die Registrierung der Microsoft Entra-Anwendung nicht vorab zugestimmt wird (wie in "MIP SDK-Setup und -Konfiguration" beschrieben), oder Sie melden sich mit einem Konto von einem anderen Mandanten (außer dem konto, in dem Ihre Anwendung registriert ist) an. Wählen Sie "Annehmen" aus, um Ihre Zustimmung aufzuzeichnen.

      Visual Studio Zustimmung.

  4. Nachdem Sie das Zugriffstoken aus Schritt 2 in die Eingabeaufforderung eingefügt haben, sollte die Konsolenausgabe die Schutzvorlagen anzeigen, ähnlich dem folgenden Beispiel:

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

    Hinweis

    Kopieren und speichern Sie die IDs einer oder mehrerer Schutzvorlagen (z. B. f42a3342-8706-4288-bd31-ebb85995028z), um sie im nächsten Schnellstart zu verwenden.

Problembehandlung

Probleme bei der Ausführung der C++-Anwendung

Zusammenfassung Fehlermeldung Lösung
Ungültiges Zugriffstoken Ausnahme ist aufgetreten... ist das Zugriffstoken falsch/abgelaufen?

Fehler bei API-Aufruf: profile_add_engine_async Fehler: [class mip::PolicySyncException] Fehler beim Abruf von Richtlinie, Fehler bei Anforderung mit HTTP-Statuscode: 401, x-ms-diagnostics: [2000001;reason="Das mit der Anforderung übermittelte OAuth-Token kann nicht analysiert werden.";error_category="invalid_token"], correlationId:[aaaa0000-bb11-2222-33cc-444444dddddd]'

C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (Prozess 29924) wurde mit Code 0 beendet.

Drücken Sie eine beliebige Taste, um dieses Fenster zu schließen. . .
Wenn Ihr Projekt erfolgreich kompiliert wird, die Ausgabe jedoch der auf der linken Seite gezeigten ähnlich ist, verfügen Sie wahrscheinlich über ein ungültiges oder abgelaufenes Token in Ihrer AcquireOAuth2Token()-Methode. Wechseln Sie zurück zum Erstellen eines PowerShell-Skripts, um Zugriffstoken zu generieren und das Zugriffstoken neu zu generieren, es erneut zu aktualisieren AcquireOAuth2Token() und erneut zu testen. Sie können das Token und seine Ansprüche auch mithilfe der jwt.ms Einzelseiten-Webanwendung untersuchen und überprüfen.

Nächste Schritte

Nachdem Sie erfahren haben, wie Sie die für einen authentifizierten Benutzer verfügbaren Schutzvorlagen auflisten, probieren Sie die nächste Schnellstartanleitung aus: