Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En el SDK de MIP, el perfil es la clase raíz para todas las operaciones. Antes de usar cualquier funcionalidad del SDK de archivos, cree un FileProfile. El perfil u otros objetos agregados al perfil realizan todas las operaciones futuras.
Cumpla los siguientes requisitos previos de código antes de crear una instancia de un perfil:
-
MipContext: cree
MipContexty almacénelo en un objeto accesible para elmip::FileProfileobjeto. -
Delegado de consentimiento:
ConsentDelegateImplimplementamip::ConsentDelegate. - Registro de aplicaciones: registre la aplicación en Microsoft Entra ID y codifique de forma rígida el identificador de cliente en los archivos de configuración o aplicación.
-
Observador de perfil de archivo: implemente una clase que herede
mip::FileProfile::Observer.
Cargar un perfil
Después de definir ProfileObserver y ConsentDelegateImpl, puede crear una instancia de mip::FileProfile. La creación del objeto mip::FileProfile requiere mip::MipContext y mip::FileProfile::Settings, que almacena toda la información de configuración sobre FileProfile.
Parámetros de FileProfile::Settings
El FileProfile::Settings constructor acepta los cinco parámetros siguientes:
-
std::shared_ptr<MipContext>: El objetomip::MipContextque fue inicializado para almacenar los datos de la aplicación, la ruta del estado, etc. -
mip::CacheStorageType: define cómo almacenar el estado: en la memoria, en el disco o en el disco con cifrado. -
std::shared_ptr<mip::ConsentDelegate>: puntero compartido de la clasemip::ConsentDelegate. -
std::shared_ptr<mip::FileProfile::Observer> observer: Un puntero compartido a la implementación del perfilObserver(enPolicyProfile,ProtectionProfileyFileProfile).
En los ejemplos siguientes se muestra cómo crear el profileSettings objeto mediante el almacenamiento local para el almacenamiento de estado o solo en memoria.
Almacenamiento del estado solo en 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
Leer/escribir la configuración del perfil desde la ruta de almacenamiento en el disco
El siguiente fragmento de código indica FileProfile a que almacene todos los datos de estado de la aplicación en ./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
Carga del perfil
Después de usar uno u otro enfoque anterior, usa el patrón promise/future para cargar FileProfile.
auto profilePromise = std::make_shared<std::promise<std::shared_ptr<FileProfile>>>();
auto profileFuture = profilePromise->get_future();
FileProfile::LoadAsync(profileSettings, profilePromise);
Si la aplicación carga correctamente un perfil, ProfileObserver::OnLoadSuccess, se invoca la implementación de mip::FileProfile::Observer::OnLoadSuccess. El SDK pasa el objeto resultante o el puntero de excepción y el contexto, como parámetros a la función. El contexto es un puntero al std::promise creado para gestionar la operación asíncrona. La función establece el valor de la promesa en el objeto FileProfile pasado para el primer parámetro. Cuando la función principal usa Future.get(), puede almacenar el resultado en un nuevo objeto.
//get the future value and store in profile.
auto profile = profileFuture.get();
Ensamblándolo
Después de implementar los observadores y el delegado de autenticación, ya puede cargar un perfil por completo. En el siguiente fragmento de código se supone que ya se incluyen todos los encabezados necesarios.
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();
}
El código carga el perfil y lo almacena en el objeto denominado profile.
Pasos siguientes
Ahora que se agrega el perfil, el siguiente paso es agregar un motor al perfil.