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.
Il profilo è la classe radice per tutte le operazioni in MIP SDK. Prima di usare qualsiasi funzionalità di File SDK, creare un oggetto FileProfile. Il profilo o altri oggetti aggiunti al profilo eseguono tutte le operazioni future.
Assicurati di soddisfare i seguenti prerequisiti del codice prima di istanziare un profilo:
-
MipContext: crearlo
MipContexte archiviarlo in un oggetto accessibile all'oggettomip::FileProfile. -
Delegato di consenso:
ConsentDelegateImplimplementamip::ConsentDelegate. - Registrazione dell'applicazione: registrare l'applicazione in Microsoft Entra ID e codificare in modo statico l'ID client nell'applicazione o nei file di configurazione.
-
Osservatore del profilo file: implementare una classe che eredita
mip::FileProfile::Observer.
Caricare un profilo
Dopo aver definito ProfileObserver e ConsentDelegateImpl, è possibile creare un'istanza di mip::FileProfile. La creazione dell'oggetto mip::FileProfile richiede mip::MipContext e mip::FileProfile::Settings, che archivia tutte le informazioni sulle impostazioni relative a FileProfile.
Parametri di FileProfile::Settings
Il FileProfile::Settings costruttore accetta i cinque parametri seguenti:
-
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. -
std::shared_ptr<mip::ConsentDelegate>: puntatore condiviso della classemip::ConsentDelegate. -
std::shared_ptr<mip::FileProfile::Observer> observer: puntatore condiviso all'implementazione del profiloObserver(inPolicyProfile,ProtectionProfileeFileProfile).
Negli esempi seguenti viene illustrato come creare l'oggetto usando l'archiviazione locale per l'archiviazione profileSettings dello 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);
FileProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::InMemory, // use in memory storage
std::make_shared<ConsentDelegateImpl>(), // new consent delegate
std::make_shared<FileProfileObserverImpl>()); // new protection profile observer
Impostazioni del profilo di lettura/scrittura dal percorso di archiviazione su disco
Il frammento di codice seguente indica FileProfile a di archiviare tutti i dati sullo stato dell'app in ./mip_app_data.
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);
FileProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::OnDisk, // use on disk storage
std::make_shared<ConsentDelegateImpl>(), // new consent delegate
std::make_shared<FileProfileObserverImpl>()); // new protection profile observer
Caricare il profilo
Dopo aver utilizzato uno dei precedenti approcci, utilizza il modello promise/future per caricare il FileProfile.
auto profilePromise = std::make_shared<std::promise<std::shared_ptr<FileProfile>>>();
auto profileFuture = profilePromise->get_future();
FileProfile::LoadAsync(profileSettings, profilePromise);
Se l'applicazione carica correttamente un profilo, ProfileObserver::OnLoadSuccessviene chiamata l'implementazione di mip::FileProfile::Observer::OnLoadSuccess. L’SDK passa alla funzione, come parametri, l'oggetto risultante o il puntatore all'eccezione, e il contesto. Il contesto è un puntatore all'oggetto std::promise creato per gestire l'operazione asincrona. La funzione imposta il valore della promise sull'oggetto FileProfile passato come primo parametro. Quando la funzione main usa Future.get(), può archiviare il risultato in un nuovo oggetto .
//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);
FileProfile::Settings profileSettings(
mMipContext, // MipContext object
mip::CacheStorageType::OnDisk, // use on disk storage
std::make_shared<ConsentDelegateImpl>(), // new consent delegate
std::make_shared<FileProfileObserverImpl>()); // new file profile observer
auto profilePromise = std::make_shared<promise<shared_ptr<FileProfile>>>();
auto profileFuture = profilePromise->get_future();
FileProfile::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.