Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här snabbstarten visar hur du implementerar det klientinitieringsmönster som används av MIP C++ SDK Policy SDK vid körning.
Anmärkning
Alla klientprogram som använder MIP Policy SDK behöver stegen i den här snabbstarten. Slutför konfigurationen av MIP SDK innan du börjar.
Förutsättningar
Om du inte redan har gjort det, se till att:
- Microsoft Information Protection (MIP) SDK-konfiguration. Slutför de här stegen före den här snabbstarten.
- Valfritt:
- Granska profil- och motorobjekt.
- Granska autentiseringsbegrepp.
- Granska observerbegrepp.
Skapa en Visual Studio-lösning och ett projekt
Öppna Visual Studio 2022 eller senare, välj Arkiv-menyn, Nytt, Projekt.
- Välj Konsolapp under C++-mallar.
- Ange ett namn och en plats för projektet.
Lägg till NuGet-paketet för MIP Policy SDK i projektet:
- I Prieskumník riešení högerklickar du på projektnoden och väljer Hantera NuGet-paket....
- Välj Bläddra och ange "Microsoft.InformationProtection" i sökrutan.
- Välj Microsoft. InformationProtection.Policy-paketet och välj Installera.
Implementera en observatörsklass
Skapa en grundläggande implementering för en principprofilobservatörsklass genom att utöka SDK:ts mip::PolicyProfile::Observer klass.
Lägg till en ny klass i projektet med namnet
profile_observer.Ersätt innehållet i
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; };Ersätt innehållet i
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); }
Implementera en autentiseringsdelegat och huvudfunktion
Lägg till en ny klass i projektet med namnet
auth_delegate. Mer information om hur du implementerar gränssnittet finns imip::AuthDelegate.Uppdatera
main()för att skapaMipContext, läsa in enPolicyProfileoch lägga till enPolicyEngine:#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; }Skapa och testa. Programmet ska initieras framgångsrikt och anslutas till policytjänsten.