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.
Cargue mip::Profile antes de llevar a cabo cualquier operación del SDK de políticas.
En los dos ejemplos siguientes se muestra cómo crear el objeto profileSettings mediante el almacenamiento local para el almacenamiento de estado o solo en memoria.
Cargar un perfil
Después de definir MipContext y ProfileObserver, úselas para crear instancias de mip::PolicyProfile. La creación del objeto mip::PolicyProfile requiere mip::PolicyProfile::Settings y mip::MipContext.
Parámetros de Profile::Settings
El PolicyProfile::Settings constructor acepta los cuatro parámetros siguientes:
-
const std::shared_ptr<MipContext>: el objetomip::MipContextque se ha inicializado para almacenar información 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. Para más información, consulte los conceptos de almacenamiento en caché. -
std::shared_ptr<mip::PolicyProfile::Observer> observer: Un puntero compartido al perfil de implementaciónObserver(enPolicyProfile,ProtectionProfileyFileProfile).
En los dos ejemplos siguientes se muestra cómo crear el objeto profileSettings 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);
PolicyProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::InMemory, // use in memory storage
std::make_shared<PolicyProfileObserverImpl>()); // new protection profile observer
Lectura y escritura de configuraciones de perfil desde la ruta de almacenamiento en 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
A continuación, use el patrón promesa/futuro para cargar Profile.
auto profilePromise = std::make_shared<std::promise<std::shared_ptr<Profile>>>();
auto profileFuture = profilePromise->get_future();
Profile::LoadAsync(profileSettings, profilePromise);
Si la aplicación carga correctamente un perfil, ProfileObserver::OnLoadSuccessse notifica a la implementación de mip::Profile::Observer::OnLoadSuccess, . El SDK pasa el objeto resultante, en este caso, un mip::Profiley el contexto como parámetros a la función de observador.
El contexto es un puntero al std::promise creado para controlar la operación asincrónica. La función establece el valor de la promesa en el objeto Profile pasado como primer parámetro. Cuando la función principal usa Future.get(), puede almacenar el resultado en un nuevo objeto en el subproceso que realiza la llamada.
//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);
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();
}
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.