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:
- Ukończ szybki start — inicjowanie aplikacji klienckich — najpierw zestaw SDK ochrony (C++), który tworzy początkowe rozwiązanie programu Visual Studio. Ten przewodnik Szybki start dotyczący szablonów ochrony listy opiera się na poprzednim, umożliwiającym właściwe utworzenie rozwiązania startowego.
- Opcjonalnie: Zapoznaj się z pojęciami dotyczącymi szablonów usługi RMS.
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.
Otwórz rozwiązanie programu Visual Studio utworzone w poprzednim artykule "Szybki start — inicjowanie aplikacji klienckiej — zestaw SDK ochrony (C++)".
Za pomocą 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.Dodaj następującą
using
dyrektywę po pliku wusing mip::ProtectionEngine;
górnej części pliku:using std::endl;
Na końcu
main()
treści poniżej zamykającego nawiasu klamrowego}
ostatniegocatch
bloku i powyżejreturn 0;
(po lewej stronie 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; }
Tworzenie skryptu programu PowerShell w celu generowania tokenów dostępu
Użyj następującego skryptu programu PowerShell, aby wygenerować tokeny dostępu, które są żądane przez zestaw SDK w AuthDelegateImpl::AcquireOAuth2Token
implementacji. Skrypt używa Get-ADALToken
polecenia cmdlet z zainstalowanego wcześniej modułu ADAL.PS w sekcji "Konfiguracja i konfiguracja zestawu MIP SDK".
Utwórz plik skryptu programu PowerShell (rozszerzenie ps1) i skopiuj/wklej następujący skrypt do pliku:
$authority
i$resourceUrl
zostaną zaktualizowane później w poniższej sekcji.- Zaktualizuj
$appId
wartości i$redirectUri
, aby odpowiadały wartościom określonym w 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
Zapisz plik skryptu, aby można było go uruchomić później, gdy jest to wymagane przez aplikację kliencą.
Kompilowanie i testowanie aplikacji
Na koniec skompiluj i przetestuj aplikację kliencą.
Użyj klawiszy Ctrl+Shift+b (rozwiązanie kompilacji), aby skompilować aplikację kliencą. Jeśli nie masz błędów kompilacji, użyj klawisza F5 (Rozpocznij debugowanie), aby uruchomić aplikację.
Jeśli projekt kompiluje i uruchamia się pomyślnie, aplikacja monituje o token dostępu, za każdym razem, gdy zestaw 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:Aby wygenerować token dostępu dla monitu, wróć do skryptu programu PowerShell i:
$authority
Zaktualizuj zmienne i$resourceUrl
. Muszą one być zgodne z wartościami określonymi w danych wyjściowych konsoli w kroku 2.Uruchom skrypt programu PowerShell. Polecenie
Get-ADALToken
cmdlet wyzwala monit uwierzytelniania entra firmy Microsoft, 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 token dostępu zostanie umieszczony w schowku.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 wstępnie wyrażona (zgodnie z opisem w sekcji "Konfiguracja i konfiguracja zestawu MIP SDK") lub logujesz się przy użyciu konta z innej dzierżawy (innej niż ta, w której zarejestrowano aplikację). Po prostu kliknij przycisk Akceptuj , aby zarejestrować swoją zgodę.
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
Skopiuj i zapisz identyfikator co najmniej jednego szablonu ochrony (na przykład
f42a3342-8706-4288-bd31-ebb85995028z
), ponieważ będzie on używany 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::P olicySyncException] Nieudane uzyskiwanie 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 skompilowane, ale zobaczysz dane wyjściowe podobne do lewej, prawdopodobnie masz nieprawidłowy lub wygasły token w metodzie AcquireOAuth2Token() . Wróć do pozycji Tworzenie skryptu programu PowerShell, aby wygenerować tokeny dostępu i ponownie wygenerować token dostępu, ponownie zaktualizować AcquireOAuth2Token() i ponownie skompilować/ponownie przeprowadzić testowanie. 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 przewodnik Szybki start:
[Szyfruj i odszyfruj tekst] (quick-protection-encrypt-decrypt text-cpp.md)