Udostępnij za pośrednictwem


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

W tym przewodniku Szybki start pokazano, jak używać zestawu MIP Protection SDK do ochrony szablonów dostępnych dla użytkownika.

Wymagania wstępne

Jeśli jeszcze tego nie zrobiono, przed kontynuowaniem upewnij się, że zostały spełnione 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. Za pomocą Eksploratora 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 main() ciała, poniżej domykającego nawiasu klamrowego } ostatniego catch bloku i powyżej return 0; (gdzie zakończyłeś w poprzednim Quickstart), 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 PowerShell, aby wygenerować tokeny dostępu, o które prosi SDK w twojej implementacji AuthDelegateImpl::AcquireOAuth2Token. Skrypt korzysta z polecenia Get-ADALToken cmdlet z modułu ADAL.PS, który wcześniej zainstalowałeś w ramach "Konfiguracja i ustawienia MIP SDK".

  1. Utwórz plik skryptu PowerShell (.ps1) i skopiuj/wklej poniższy skrypt do pliku.

    • $authority i $resourceUrl zostaną zaktualizowane później, w dalszej części.
    • Zaktualizuj $appId oraz $redirectUri, aby dopasować wartości określone podczas rejestracji aplikacji 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 Azure AD app registration
    $redirectUri = '<redirect-uri>'                  # Redirect URI of the Azure AD app registration
    $response = Get-ADALToken -Resource $resourceUrl -ClientId $appId -RedirectUri $redirectUri -Authority $authority -PromptBehavior:RefreshSession
    $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

Na koniec skompiluj i przetestuj aplikację kliencą.

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

  2. Jeśli Twój projekt się kompiluje i uruchamia bez błędów, aplikacja za każdym razem, gdy SDK wywołuje Twoją metodę AcquireOAuth2Token(), poprosi o token dostępu. 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 wyjściu konsoli w kroku nr 2.

    • Uruchom skrypt programu PowerShell. Polecenie cmdlet Get-ADALToken wywołuje monit uwierzytelniania Microsoft Entra, podobny do poniższego przykładu. Podaj to samo konto, które zostało podane w wyniku konsoli w kroku nr 2. Po pomyślnym zalogowaniu, token dostępu zostanie umieszczony w schowku.

      Pozyskiwanie tokenu dla logowania w programie Visual Studio

    • Może być również konieczne wyrażenie zgody, aby zezwolić aplikacji na dostęp do interfejsów API usługi MIP podczas uruchamiania na koncie 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ę). Po prostu kliknij przycisk 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 co najmniej jednego szablonu 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 Niepowodzenie z: [klasa mip::PolicySyncException] Nieudane pobieranie zasad, żądanie nie powiodło się z kodem stanu http: 401, x-ms-diagnostics: [2000001; reason="Token OAuth przesłany z żądaniem nie można przeanalizować", error_category="invalid_token"], correlationId:[35bc0023-3727-4eff-8062-000006d5d672]'

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.

Dalsze kroki

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

[Szyfruj i odszyfruj tekst](quick-protection-encrypt-decrypt text-cpp.md)