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:
- Pełny przewodnik Szybki start — inicjowanie aplikacji klienckich — najpierw zestaw SDK ochrony (C++), który tworzy Visual Studio startowe. Ten przewodnik Szybki start "Szablony ochrony listy" opiera się na poprzednim, aby zapewnić prawidłowe utworzenie rozwiązania startowego.
- Opcjonalnie: Zapoznaj się z pojęciami szablonów usługi RMS.
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.
Otwórz Visual Studio rozwiązania utworzonego w poprzednim artykule "Szybki start — inicjowanie aplikacji klienckiej — zestaw SDK ochrony (C++)".
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.
Dodaj następującą
usingprzepisy po , wusing mip::ProtectionEngine;górnej części pliku:using std::endl;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ącycatchreturn 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".
Utwórz plik skryptu programu PowerShell (.ps1 rozszerzenia) i skopiuj i wklej do pliku następujący skrypt:
$authorityi$resourceUrlzostaną zaktualizowane później w następnej sekcji.- Aktualizuj i , aby dopasować się do wartości określonych
$appIdw rejestracji aplikacji usługi Azure$redirectUriAD.
$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 clipboardZapisz 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.
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ę.
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:Aby wygenerować token dostępu dla monitu, wróć do skryptu programu PowerShell i:
Aktualizowanie
$authorityzmiennych$resourceUrli. Muszą one być zgodne z wartościami określonymi w wyniku konsoli w kroku 2.Uruchom skrypt programu PowerShell. Polecenie
Get-ADALTokencmdlet 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.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ę.
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-ebb85995028zprzewodnika 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)

