Schnellstart: Listenschutzvorlagen (C++)

In dieser Schnellstartanleitung erfahren Sie, wie Sie das MIP Protection SDK verwenden, um für den Benutzer verfügbare Schutzvorlagen zu schützen.

Voraussetzungen

Falls noch nicht geschehen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen, 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 im 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() Textkörpers unter 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 vom SDK in Ihrer AuthDelegateImpl::AcquireOAuth2Token Implementierung angefordert werden. Das Skript verwendet das Get-MsalToken Cmdlet aus dem zuvor installierten Modul MSAL.PS in "MIP SDK Einrichtung und Konfiguration".

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

    • $authority und $resourceUrl werden später im folgenden Abschnitt aktualisiert.
    • Aktualisieren $appId und $redirectUri, um die Werte anzupassen, 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 schließlich Ihre Clientanwendung.

  1. Verwenden Sie STRG+UMSCHALT+B (Lösung erstellen), um Ihre Client-Anwendung zu erstellen. Wenn keine Buildfehler auftreten, 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 gleich sind:

  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 wird das Zugriffstoken in der Zwischenablage platziert.

      Visual Studio-Tokenanmeldung abrufen

    • 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. Klicken Sie einfach auf "Annehmen" , 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 wie im 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 ID einer oder mehrerer Schutzvorlagen (z. B. f42a3342-8706-4288-bd31-ebb85995028z), da Sie diese im nächsten Schnellstart verwenden werden.

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 beim API-Aufruf: profile_add_engine_async fehlgeschlagen mit: [Klasse mip::PolicySyncException] Fehler beim Abrufen der Richtlinie, Anforderung fehlgeschlagen mit http-Statuscode: 401, x-ms-diagnostics: [2000001;reason="OAuth-Token, das mit der Anforderung übermittelt wurde, kann nicht geparst werden.";error_category="invalid_token"], correlationId:[35bc0023-3727-4eff-8062-000006d5d672]'

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: