Szybki start: tworzenie listy szablonów ochrony (C++)

W tym przewodniku Szybki start pokazano, jak za pomocą zestawu MIP Protection SDK wyświetlić listę szablonów ochrony dostępnych dla użytkownika.

Wymagania wstępne

Przed kontynuowaniem wykonaj następujące wymagania wstępne:

Dodawanie logiki w celu wyświetlenia listy szablonów ochrony

Dodaj logikę, aby wyświetlić listę szablonów ochrony dostępnych dla użytkownika przy użyciu obiektu aparatu ochrony.

  1. Otwórz rozwiązanie programu Visual Studio utworzone w poprzednim artykule "Szybki start — inicjowanie aplikacji klienckiej — zestaw SDK ochrony (C++)".

  2. W Eksplorator rozwiązań otwórz plik .cpp w projekcie zawierający implementację main() metody . Domyślnie ma taką samą nazwę jak projekt zawierający go, który został określony podczas tworzenia projektu.

  3. Dodaj następującą dyrektywę using po using mip::ProtectionEngine;, blisko góry pliku:

    using std::endl;
    
  4. Pod koniec sekcji } body, poniżej zamykającego nawiasu klamrowego catch ostatniego bloku return 0; i powyżej main() (na którym zakończono pracę w poprzednim przewodniku Szybki start), wstaw następujący 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;
     }
    
    

Utwórz skrypt PowerShell do generowania tokenów dostępu.

Użyj następującego skryptu programu PowerShell, aby wygenerować tokeny dostępu, które zestaw SDK żąda w AuthDelegateImpl::AcquireOAuth2Token implementacji. Skrypt używa polecenia cmdlet Get-MsalToken z modułu MSAL.PS, który został wcześniej zainstalowany, w sekcji „Konfiguracja i ustawienia zestawu MIP SDK”.

  1. Utwórz plik skryptu programu PowerShell (rozszerzenie.ps1) i skopiuj i wklej następujący skrypt do pliku:

    • $authority i $resourceUrl zostaną zaktualizowane później, w dalszej części.
    • Zaktualizuj $appId i $redirectUri tak, aby odpowiadały wartościom określonym w rejestracji aplikacji w usłudze 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. Zapisz plik skryptu, aby móc go uruchomić później, gdy zostanie to zażądane przez Twoją aplikację kliencką.

Kompilowanie i testowanie aplikacji

Skompiluj i przetestuj aplikację kliencą.

  1. Użyj Ctrl+Shift+B (rozwiązanie kompilacji), aby skompilować aplikację kliencą. Jeśli kompilacja nie zawiera błędów, użyj klawisza F5 (Rozpocznij debugowanie), aby uruchomić aplikację.

  2. Jeśli projekt kompiluje się i uruchamia pomyślnie, aplikacja prosi o token dostępu za każdym razem, gdy SDK wywołuje metodę AcquireOAuth2Token(). Możesz ponownie użyć wcześniej wygenerowanego tokenu, jeśli zostanie wyświetlony monit wiele razy, a żądane wartości są takie same:

  3. Aby wygenerować token dostępu do monitu, wróć do swojego skryptu PowerShell i:

    • Zaktualizuj zmienne $authority i $resourceUrl. Muszą one odpowiadać wartościom określonym w danych wyjściowych konsoli w kroku 2.

    • Uruchom skrypt programu PowerShell. Polecenie Get-MsalToken cmdlet wyzwala monit o uwierzytelnienie Microsoft Entra, podobnie jak w poniższym przykładzie. Określ to samo konto podane w danych wyjściowych konsoli w kroku 2. Po pomyślnym zalogowaniu program PowerShell umieszcza token dostępu w schowku.

      Logowanie w Visual Studio przy użyciu tokenu.

    • Może być również konieczne wyrażenie zgody, aby umożliwić aplikacji dostęp do interfejsów API MIP podczas działania na koncie używanym do logowania. Dzieje się tak, gdy rejestracja aplikacji Microsoft Entra nie jest wcześniej zatwierdzona (zgodnie z opisem w sekcji "Konfiguracja zestawu MIP SDK") lub logujesz się przy użyciu konta z innego dzierżawcy (innego niż ten, w którym zarejestrowano aplikację). Wybierz pozycję Akceptuj , aby zarejestrować swoją zgodę.

      Zgoda programu Visual Studio.

  4. Po wklejeniu tokenu dostępu do monitu z kroku 2 dane wyjściowe konsoli powinny wyświetlić szablony ochrony, podobnie jak w poniższym przykładzie:

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

    Uwaga / Notatka

    Skopiuj i zapisz identyfikator jednego lub większej liczby szablonów ochrony (na przykład f42a3342-8706-4288-bd31-ebb85995028z), którego użyjesz w następnym przewodniku Szybki start.

Rozwiązywanie problemów

Problemy podczas wykonywania aplikacji C++

Podsumowanie Komunikat o błędzie Rozwiązanie
Nieprawidłowy token dostępu Wystąpił wyjątek... czy token dostępu jest niepoprawny/wygasł?

Nieudane wywołanie interfejsu API: profile_add_engine_async nie powiodło się z powodu: [class mip::PolicySyncException] Nie udało się pobrać zasad, żądanie zakończyło się niepowodzeniem z kodem stanu HTTP: 401, x-ms-diagnostics: [2000001;reason="Nie można przeanalizować tokenu OAuth przesłanego z żądaniem.";error_category="invalid_token"], correlationId:[aaaa0000-bb11-2222-33cc-444444dddddd]'

C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (proces 29924) zakończył działanie z kodem 0.

Naciśnij dowolny klawisz, aby zamknąć to okno. . .
Jeśli projekt zostanie pomyślnie skompilowany, ale zobaczysz dane wyjściowe podobne do przedstawionych po lewej, prawdopodobnie masz nieprawidłowy lub wygasły token w funkcji AcquireOAuth2Token(). Wróć do Utwórz skrypt PowerShell do generowania tokenów dostępu i wygeneruj ponownie token dostępu, zaktualizuj AcquireOAuth2Token() ponownie, i odbuduj/przetestuj. Możesz również sprawdzić i zweryfikować token i jego oświadczenia przy użyciu aplikacji internetowej jwt.ms jednostronicowej.

Następne kroki

Teraz, gdy wiesz już, jak wyświetlić listę szablonów ochrony dostępnych dla uwierzytelnionego użytkownika, wypróbuj następny szybki start: