Compartir a través de


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étodo mip::FileHandler de GetProtection().
  • Compruebe que el usuario tiene los derechos EDIT llamando al método AccessCheck().
  • Use mip::FileHandler o GetDecryptedTemporaryFileAsync() de GetDecryptedTemporaryStreamAsync() 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étodo SetProtection(), proporcionando el mip::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.

Pasos siguientes