Republicación (C++)
Información general
Esta introducción se centra en la opción de volver a publicar en el SDK de MIP, que es un escenario específico que se encuentra cuando una aplicación debe permitir que un usuario edite el archivo, pero quiere mantener la información de licencia de publicación original sobre el propietario, los derechos, la clave de contenido, etc.
El patrón puede tener un aspecto similar al siguiente:
- Un usuario abre un documento protegido para su edición.
- El usuario solo tendrá permiso para editar el archivo si se le han concedido los derechos adecuados.
- El usuario edita y, a continuación, guarda el documento.
El pseudocódigo del SDK de MIP para realizar esta tarea puede tener el siguiente aspecto:
- Cree un
mip::FileHandler
que apunte al archivo de destino. - Almacene el objeto
mip::ProtectionHandler
expuesto por el métodomip::FileHandler
deGetProtection()
. - Compruebe que el usuario tiene los derechos EDIT llamando al método
AccessCheck()
. - Use
mip::FileHandler
oGetDecryptedTemporaryFileAsync()
deGetDecryptedTemporaryStreamAsync()
para obtener una salida descifrada temporal. - Edite el archivo temporal o el contenido de la secuencia y guarde.
- Cree una nueva instancia de
mip::FileHandler
que apunte al archivo temporal y use el métodoSetProtection()
, proporcionando elmip::ProtectionHandler
almacenado a modo de parámetro. - Confirme el cambio.
Con el mip::ProtectionHandler
del archivo original, se mantendrán el propietario, el identificador de contenido, la clave de contenido, etc. en el documento editado. Este escenario de republicación requiere que la aplicación mantenga una referencia al mip::ProtectionHandler
original.
Implementación
Como ya hemos explicado, la clase mip::FileHandler
expone métodos para leer, escribir y quitar tanto etiquetas como información de protección. Para obtener la lista completa de operaciones admitidas, revise la referencia de mip::FileHandler.
En este escenario se usan los métodos siguientes de mip::FileHandler
:
GetProtection()
CommitAsync()
GetDecryptedTemporaryFileAsync()
SetProtection()
En este escenario también se usa el elemento mip::ProtectionHandler
, que expone las funciones para cifrar y descifrar secuencias y búferes protegidos, realizar comprobaciones de acceso, obtener la licencia de publicación y obtener atributos de la información protegida. Se usará el método AccessCheck()
para validar si el usuario tiene derechos para editar el archivo.
Para completar correctamente este escenario de reprotección, revise los inicios rápidos en "Pasos siguientes" y asegúrese de que la aplicación se compile y pueda enumerar correctamente las etiquetas.
Creación de un controlador de protección desde el archivo y descifrado del archivo
El elemento mip::ProtectionHandler
expone las funciones para cifrar y descifrar secuencias y búferes protegidos, realizar comprobaciones de acceso, obtener la licencia de publicación y obtener atributos de la información protegida. Los objetos mip::ProtectionHandler
se construyen proporcionando un ProtectionDescriptor o una licencia de publicación en serie. En este caso de uso, usaríamos implícitamente la licencia de publicación como licencia de publicación al descifrar contenido ya protegido o al proteger el contenido en el que ya se hubiera construido la licencia.
mip::FileHandler
expone un método denominado GetProtection()
que recupera el mip::ProtectionHandler
del archivo asociado a mip::FileHandler
. Una vez recuperado el objeto mip::ProtectionHandler
, se puede usar para validar los niveles de acceso del usuario para el archivo, descifrar el archivo y luego cifrar el archivo una vez que se edite.
El elemento mip::ProtectionHandler
de AccessCheck()
se usa para validar que el usuario tiene un derecho específico con respecto al archivo y devuelve una respuesta booleana, según el resultado. Por ejemplo, para comprobar que el usuario tiene derechos de edición, debe llamar al método enviando el valor "EDIT". Si el resultado es true, se permite al usuario editar el archivo. Una vez comprobado el derecho EDIT, use mip::FileHandler
de GetDecryptedTemporaryFileAsync()
para recuperar el archivo descifrado temporal.
Para más información sobre los distintos derechos de usuario, consulte Derechos de usuario para Azure Information Protection.
Importante
Las comprobaciones y el cumplimiento de acceso son exclusivamente para el desarrollador de aplicaciones. Un usuario con derechos VIEW es capaz de descifrar la información protegida. Es necesario que la aplicación valide el conjunto de derechos concedidos al usuario y aplique esos derechos a través de controles de protección de la información, como impedir la copia, la edición o hacer capturas de pantalla. Si no se implementan correctamente los controles de protección, se puede producir una exposición de información confidencial.
Guardar y publicar el archivo editado aplicando protección
Después de descifrar el archivo, se puede editar. Una vez completada la operación de edición, se pueden confirmar los cambios. Cree un objeto IFileHandler
con el archivo temporal anterior para controlar el archivo confirmado. Después, el archivo temporal se puede proteger mediante el objeto IProtectionHandler
recuperado a partir del archivo original.