Szybki start: szablony ochrony listy (C++)

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

Wymagania wstępne

Jeśli jeszcze tego nie zrobić, przed kontynuowaniem upewnij się, że są spełnione następujące wymagania wstępne:

Dodawanie logiki do listy szablonów ochrony

Dodaj logikę do szablonów ochrony listy dostępnych dla użytkownika przy użyciu obiektu aparatu ochrony.

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

  2. Za pomocą Eksploratorarozwiązań otwórz plik cpp w projekcie zawierającym implementację metody. Domyślna nazwa jest taka sama jak nazwa projektu zawierającego projekt, która jest określona podczas tworzenia projektu.

  3. Dodaj następującą using przepisy po , w using mip::ProtectionEngine; górnej części pliku:

    using std::endl;
    
  4. Na końcu treści, poniżej zamykającego nawiasu klamrowego ostatniego bloku i powyżej (od miejsca, w którym ten szybki start został wcześniej wyłączony), wstaw main()} następujący catchreturn 0; 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;
     }
    
    

Tworzenie skryptu programu PowerShell w celu wygenerowania tokenów dostępu

Aby wygenerować tokeny dostępu wymagane przez zestaw SDK w implementacji, użyj następującego skryptu programu AuthDelegateImpl::AcquireOAuth2Token PowerShell. Skrypt używa polecenia cmdlet z modułu ADAL.PS zainstalowanego wcześniej w te sposób: "Konfiguracja i konfiguracja Get-ADALToken zestawu SDK MIP".

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

    • $authority i $resourceUrl zostaną zaktualizowane później w następnej sekcji.
    • Aktualizuj i , aby dopasować się do wartości określonych $appId w rejestracji aplikacji usługi Azure $redirectUri AD.
    $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 można było go później uruchomić na żądanie aplikacji klienckiej.

Tworzenie i testowanie aplikacji

Na koniec skompilowanie i testowanie aplikacji klienckiej.

  1. Do tworzenia aplikacji klienckiejużyj klawiszy Ctrl+Shift+b (kompilacja rozwiązania). Jeśli nie występują błędy kompilacji, użyj klawisza F5(Rozpocznijdebugowanie), aby uruchomić aplikację.

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

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

    • Aktualizowanie $authority zmiennych $resourceUrl i. Muszą one być zgodne z wartościami określonymi w wyniku konsoli w kroku 2.

    • Uruchom skrypt programu PowerShell. Polecenie Get-ADALToken cmdlet wyzwala monit o uwierzytelnienie usługi Azure AD, 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 się token dostępu zostanie umieszczony w schowku.

      Visual Studio uzyskać logowanie tokenu

    • Podczas uruchamiania w ramach konta logowania może być również konieczne wyrażenie zgody w celu zezwolenia aplikacji na dostęp do interfejsów API miP. Dzieje się tak, gdy rejestracja aplikacji usługi Azure AD nie jest wstępnie ze zgodą (zgodnie z konspektem "Konfiguracja i konfiguracja zestawu SDK MIP") lub logujesz się przy użyciu konta z innej dzierżawy (innej niż ta, w której jest zarejestrowana aplikacja). Po prostu kliknij przycisk Zaakceptuj, aby nagrać swoją zgodę.

      Visual Studio zgody

  4. Po wklejeniu tokenu dostępu w wierszu polecenia z kroku 2 na wynikach konsoli powinny być wyświetlane 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

    Skopiuj i zapisz identyfikator jednego lub większej liczby szablonów ochrony (na przykład ), jak w przypadku następnego f42a3342-8706-4288-bd31-ebb85995028z przewodnika Szybki start.

Rozwiązywanie problemów

Problemy podczas wykonywania aplikacji C++

Podsumowanie Komunikat o błędzie Rozwiązanie
Token o złym dostępie Wystąpił wyjątek... czy token dostępu jest nieprawidłowy/wygasł?

Niepowodzenie wywołania interfejsu API: błąd profile_add_engine_async z: [class mip::P olicySyncException] Nie można uzyskać zasad, Żądanie nie powiodło się z kodem stanu http: 401, x-ms-diagnostics: [2000001;reason="Nie można przechwycić tokenu OAuth przesłanego z żądaniem". error_category="invalid_token"], korelacjaId:[35bc0023-3727-4eff-8062-000006d5d672]'

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

Naciśnij dowolny klawisz, aby zamknąć to okno. . .
Jeśli projekt pomyślnie tworzy kompilacje, ale widzisz dane wyjściowe podobne do lewej, prawdopodobnie masz nieprawidłowy lub wygasły token w AcquireOAuth2Token() Twojej metodzie. Wróć do tematu Tworzenie skryptu programu PowerShell w celu generowania tokenów dostępu i ponownego generowania tokenu dostępu, ponownej aktualizacji oraz odbudowywania/ponownego testu. Możesz również zbadać i zweryfikować token oraz jego roszczenia, używając jwt.ms jednostronicowej aplikacji sieci Web.

Następne kroki

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

[Szyfrowanie i odszyfrowywanie tekstu] (quick-protection-encrypt-decrypt text-cpp.md)