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.
El mip::FileEngine del SDK de archivos MIP proporciona una interfaz para todas las operaciones realizadas en nombre de una identidad especificada. Agregue un motor para cada usuario que inicie sesión en la aplicación. El motor realiza todas las operaciones en el contexto de esa identidad.
Tiene FileEngine dos responsabilidades principales: enumerar etiquetas para un usuario autenticado y crear controladores de archivos para realizar operaciones de archivo en nombre del usuario.
mip::FileEngine-
ListSensitivityLabels(): obtiene la lista de etiquetas para el motor cargado. -
CreateFileHandler(): crea unmip::FileHandlerpara un archivo o una secuencia específicos.
Adición de un motor de archivos
Como se describe en Objetos de perfil y motor, un motor puede tener dos estados: CREATED o LOADED. Si no es uno de esos dos estados, no existe. Para crear y cargar un estado, realice una sola llamada a FileProfile::LoadAsync. Si el motor ya existe en el estado almacenado en caché, es LOADED. Si no existe, es CREATED y LOADED.
CREATED implica que la aplicación tiene toda la información del servicio necesario para cargar el motor.
LOADED implica que todas las estructuras de datos necesarias para usar el motor existen en la memoria.
Crear configuración del motor de archivos
De forma similar a un perfil, el motor también requiere un objeto de configuración: mip::FileEngine::Settings. Este objeto almacena el identificador único del motor, la mip::AuthDelegate implementación, los datos de cliente personalizables para la depuración o telemetría, y, opcionalmente, la configuración regional.
Aquí se crea un objeto FileEngine::Settings denominado engineSettings mediante la identidad del usuario de la aplicación.
FileEngine::Settings engineSettings(
mip::Identity(mUsername), // mip::Identity.
authDelegateImpl, // auth delegate object
"", // Client data. Customizable by developer, stored with engine.
"en-US", // Locale.
false); // Load sensitive information types for driving classification.
Al crear engineSettings de esta manera, también establezca explícitamente un engineId único:
engineSettings.SetEngineId(engineId);
El uso del nombre de usuario o el correo electrónico ayuda a garantizar que el mismo motor se cargue cada vez que el usuario use el servicio o la aplicación.
También es válido proporcionar un id. de motor personalizado:
FileEngine::Settings engineSettings(
"myEngineId", // string
authDelegateImpl, // auth delegate object
"", // Client data in string format. Customizable by developer, stored with engine.
"en-US", // Locale. Default is en-US
false); // Load sensitive information types for driving classification. Default is false.
Como procedimiento recomendado, use un primer parámetro, id, que conecte el motor al usuario asociado. Una dirección de correo electrónico, un UPN o un GUID de objeto de Microsoft Entra ayudan a garantizar que el identificador sea único y pueda cargarse desde el estado local sin necesidad de llamar al servicio.
Adición del motor de archivos
Para agregar el motor, vuelva al patrón promise/future usado para cargar el perfil. En lugar de crear la promesa para mip::FileProfile, créela mediante mip::FileEngine.
//auto profile will be std::shared_ptr<mip::FileProfile>
auto profile = profileFuture.get();
// Instantiate the AuthDelegate implementation.
auto authDelegateImpl = std::make_shared<sample::auth::AuthDelegateImpl>(appInfo, userName, password);
//Create the FileEngine::Settings object
FileEngine::Settings engineSettings("UniqueID", authDelegateImpl, "");
//Create a promise for std::shared_ptr<mip::FileEngine>
auto enginePromise = std::make_shared<std::promise<std::shared_ptr<mip::FileEngine>>>();
//Instantiate the future from the promise
auto engineFuture = enginePromise->get_future();
//Add the engine using AddEngineAsync, passing in the engine settings and the promise
profile->AddEngineAsync(engineSettings, enginePromise);
//get the future value and store in std::shared_ptr<mip::FileEngine>
auto engine = engineFuture.get();
El código añade el motor del usuario autenticado al perfil.
Enumerar etiquetas de confidencialidad
Con el motor añadido, puede listar todas las etiquetas de confidencialidad disponibles para el usuario autenticado llamando a engine->ListSensitivityLabels().
ListSensitivityLabels() captura la lista de etiquetas y atributos de esas etiquetas para un usuario específico del servicio. El resultado se almacena en un vector de std::shared_ptr<mip::Label>.
Para obtener más información, consulte la referencia de clasemip::Label.
ListarEtiquetasDeSensibilidad()
std::vector<shared_ptr<mip::Label>> labels = engine->ListSensitivityLabels();
o bien, simplificado:
auto labels = engine->ListSensitivityLabels();
Imprimir las etiquetas e identificadores
La impresión de los nombres muestra que la aplicación extrajo correctamente la directiva del servicio y obtuvo las etiquetas. Para aplicar la etiqueta, necesita el identificador de etiqueta. El siguiente código itera por todas las etiquetas y muestra el name y el id de cada etiqueta principal y secundaria.
//Iterate through all labels in the vector
for (const auto& label : labels) {
//Print label name and GUID
cout << label->GetName() << " : " << label->GetId() << endl;
//Print child label name and GUID
for (const auto& child : label->GetChildren()) {
cout << "-> " << child->GetName() << " : " << child->GetId() << endl;
}
}
Puede usar la colección de mip::Label devuelta por GetSensitivityLabels() para mostrar todas las etiquetas disponibles para el usuario y, después, cuando se selecciona, use el identificador para aplicar etiquetas a un archivo.
Pasos siguientes
Ahora que se carga el perfil, se agrega el motor y hay etiquetas disponibles, puede agregar un controlador para empezar a leer, escribir o quitar etiquetas de los archivos. Para obtener más información, consulte Controladores de archivos en el SDK de MIP.