Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Caricare mip::Profile prima di eseguire qualsiasi operazione di Policy SDK.
I due esempi seguenti illustrano come creare l'oggetto profileSettings usando l'archiviazione locale per l'archiviazione stato o solo in memoria.
Caricare un profilo
Dopo aver definito MipContext e ProfileObserver, usateli per istanziare mip::PolicyProfile. La creazione dell'oggetto mip::PolicyProfile richiede mip::PolicyProfile::Settings e mip::MipContext.
Parametri di Profile::Settings
Il PolicyProfile::Settings costruttore accetta i quattro parametri seguenti:
-
const std::shared_ptr<MipContext>mip::MipContext: oggetto inizializzato per archiviare le informazioni sull'applicazione, il percorso dello stato e così via. -
mip::CacheStorageType: definisce come archiviare lo stato: in memoria, su disco o su disco e crittografato. Per altri dettagli, vedere i concetti relativi all'archiviazione della cache. -
std::shared_ptr<mip::PolicyProfile::Observer> observer: puntatore condiviso all'implementazione del profiloObserver(inPolicyProfile,ProtectionProfileeFileProfile).
I due esempi seguenti illustrano come creare l'oggetto profileSettings usando l'archiviazione locale per l'archiviazione stato o solo in memoria.
Archiviare lo stato solo in memoria
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(mAppInfo,
"mip_data",
mip::LogLevel::Trace,
false);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
PolicyProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::InMemory, // use in memory storage
std::make_shared<PolicyProfileObserverImpl>()); // new protection profile observer
Impostazioni del profilo di lettura/scrittura dal percorso di archiviazione su disco
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(mAppInfo,
"mip_data",
mip::LogLevel::Trace,
false);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
PolicyProfile::Settings profileSettings(
mipContext, // mipContext object
mip::CacheStorageType::OnDisk, // use on disk storage
std::make_shared<PolicyProfileObserverImpl>()); // new protection profile observer
Usa quindi il modello promise/future per caricare il Profile.
auto profilePromise = std::make_shared<std::promise<std::shared_ptr<Profile>>>();
auto profileFuture = profilePromise->get_future();
Profile::LoadAsync(profileSettings, profilePromise);
Se l'applicazione carica correttamente un profilo, ProfileObserver::OnLoadSuccess, l'implementazione di mip::Profile::Observer::OnLoadSuccess riceve una notifica. L’SDK passa l'oggetto risultante, in questo caso un mip::Profile, e il contesto come parametri per la funzione osservatore.
Il contesto è un puntatore all'oggetto std::promise creato per gestire l'operazione asincrona. La funzione imposta il valore di Promise sull'oggetto Profile passato come primo parametro. Quando la funzione main usa Future.get(), può archiviare il risultato in un nuovo oggetto nel thread chiamante.
//get the future value and store in profile.
auto profile = profileFuture.get();
Mettere tutto insieme
Dopo aver implementato gli osservatori e il delegato di autenticazione, è possibile caricare completamente un profilo. Il frammento di codice seguente presuppone che tutte le intestazioni necessarie siano già incluse.
int main()
{
const string userName = "MyTestUser@contoso.com";
const string password = "P@ssw0rd!";
const string clientId = "MyClientId";
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(mAppInfo,
"mip_data",
mip::LogLevel::Trace,
false);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
PolicyProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::OnDisk, // use on disk storage
std::make_shared<PolicyProfileObserverImpl>()); // new protection profile observer
auto profilePromise = std::make_shared<promise<shared_ptr<PolicyProfile>>>();
auto profileFuture = profilePromise->get_future();
Profile::LoadAsync(profileSettings, profilePromise);
auto profile = profileFuture.get();
}
Il codice carica il profilo e lo archivia nell'oggetto denominato profile.
Passaggi successivi
Dopo aver aggiunto il profilo, il passaggio successivo consiste nell'aggiungere un motore al profilo.