Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W przewodniku szybkiego startu pokazano, jak zaimplementować wzorzec inicjowania klienta używany przez zestaw SDK MIP C++ podczas działania.
Uwaga / Notatka
Każda aplikacja kliencka korzystająca z zestawu MIP Policy SDK wymaga kroków opisanych w tym przewodniku Szybki start. Przed rozpoczęciem skonfiguruj i przygotuj MIP SDK.
Wymagania wstępne
Jeśli jeszcze tego nie zrobiono, upewnij się, że:
- Microsoft Information Protection (MIP) SDK setup and configuration (Konfiguracja i konfiguracja zestawu SDK usługi Microsoft Information Protection). Wykonaj te kroki przed rozpoczęciem tego przewodnika Szybki start.
- Opcjonalnie:
- Przejrzyj obiekty profilu i silnika.
- Zapoznaj się z pojęciami dotyczącymi uwierzytelniania.
- Zapoznaj się z pojęciami obserwatora.
Tworzenie rozwiązania i projektu programu Visual Studio
Otwórz program Visual Studio 2022 lub nowszy, wybierz menu Plik , Nowy, Projekt.
- Wybierz pozycję Aplikacja konsolowa w obszarze Szablony języka C++.
- Podaj nazwę i lokalizację projektu.
Dodaj pakiet NuGet dla zestawu MIP Policy SDK do projektu:
- W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł projektu i wybierz polecenie Zarządzaj pakietami NuGet....
- Wybierz opcję Przeglądaj i wpisz "Microsoft.InformationProtection" w polu wyszukiwania.
- Wybierz pakiet Microsoft.InformationProtection.Policy i wybierz pozycję Zainstaluj.
Zaimplementuj klasę obserwatora
Utwórz podstawową implementację klasy obserwatora profilu polityki, rozszerzając klasę zestawu SDK mip::PolicyProfile::Observer.
Dodaj nową klasę do projektu o nazwie
profile_observer.Zastąp zawartość elementu
profile_observer.h:#include <memory> #include "mip/upe/policy_profile.h" class PolicyProfileObserver final : public mip::PolicyProfile::Observer { public: PolicyProfileObserver() { } void OnLoadSuccess(const std::shared_ptr<mip::PolicyProfile>& profile, const std::shared_ptr<void>& context) override; void OnLoadFailure(const std::exception_ptr& error, const std::shared_ptr<void>& context) override; void OnAddEngineSuccess(const std::shared_ptr<mip::PolicyEngine>& engine, const std::shared_ptr<void>& context) override; void OnAddEngineFailure(const std::exception_ptr& error, const std::shared_ptr<void>& context) override; };Zastąp zawartość elementu
profile_observer.cpp:#include "profile_observer.h" #include <future> using std::promise; using std::shared_ptr; using std::exception_ptr; void PolicyProfileObserver::OnLoadSuccess(const shared_ptr<mip::PolicyProfile>& profile, const shared_ptr<void>& context) { auto loadPromise = static_cast<promise<shared_ptr<mip::PolicyProfile>>*>(context.get()); loadPromise->set_value(profile); } void PolicyProfileObserver::OnLoadFailure(const exception_ptr& error, const shared_ptr<void>& context) { auto loadPromise = static_cast<promise<shared_ptr<mip::PolicyProfile>>*>(context.get()); loadPromise->set_exception(error); } void PolicyProfileObserver::OnAddEngineSuccess(const shared_ptr<mip::PolicyEngine>& engine, const shared_ptr<void>& context) { auto addEnginePromise = static_cast<promise<shared_ptr<mip::PolicyEngine>>*>(context.get()); addEnginePromise->set_value(engine); } void PolicyProfileObserver::OnAddEngineFailure(const exception_ptr& error, const shared_ptr<void>& context) { auto addEnginePromise = static_cast<promise<shared_ptr<mip::PolicyEngine>>*>(context.get()); addEnginePromise->set_exception(error); }
Zaimplementuj delegata uwierzytelniania i funkcję główną
Dodaj nową klasę do projektu o nazwie
auth_delegate. Aby uzyskać szczegółowe informacje na temat implementowania interfejsu, zobaczmip::AuthDelegate.Zaktualizuj
main(), aby utworzyćMipContext, załadujPolicyProfile, i dodajPolicyEngine.#include "mip/mip_context.h" #include "mip/upe/policy_profile.h" #include "auth_delegate.h" #include "profile_observer.h" #include <iostream> #include <future> using std::cout; using std::endl; using std::make_shared; using std::shared_ptr; int main() { // Construct/initialize objects required by the application's profile object mip::ApplicationInfo appInfo{ "your_app_id", // Application ID from Microsoft Entra app registration "MIP SDK Policy Quickstart", // Friendly name "1.0" // Version }; auto mipConfiguration = make_shared<mip::MipConfiguration>( appInfo, // ApplicationInfo object "mip_data", // Path to store settings and logs mip::LogLevel::Trace, // Log level false, // isOfflineOnly mip::CacheStorageType::OnDiskEncrypted // Cache storage type ); auto mipContext = mip::MipContext::Create(mipConfiguration); auto profileObserver = make_shared<PolicyProfileObserver>(); auto authDelegateImpl = make_shared<sample::auth::AuthDelegateImpl>("your_app_id"); mip::PolicyProfile::Settings profileSettings(mipContext, mip::CacheStorageType::OnDiskEncrypted, profileObserver ); // Load Policy Profile auto profilePromise = make_shared<std::promise<shared_ptr<mip::PolicyProfile>>>(); auto profileFuture = profilePromise->get_future(); mip::PolicyProfile::LoadAsync(profileSettings, profilePromise); auto profile = profileFuture.get(); // Add a Policy Engine mip::PolicyEngine::Settings engineSettings( mip::Identity("user@contoso.com"), authDelegateImpl, "", "en-US", false ); auto enginePromise = make_shared<std::promise<shared_ptr<mip::PolicyEngine>>>(); auto engineFuture = enginePromise->get_future(); profile->AddEngineAsync(engineSettings, enginePromise); auto engine = engineFuture.get(); // Application using Policy engine is ready. // Engine can be used to list labels, compute actions, etc. cout << "Policy engine loaded successfully." << endl; return 0; }Kompilowanie i testowanie. Aplikacja powinna pomyślnie zainicjować i połączyć się z usługą Policy.