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.
Esta introducción se centra en la republicación en el SDK de MIP. La nueva publicación es necesaria cuando una aplicación necesita permitir que un usuario edite el archivo, pero debe 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 debe poder editar el archivo si tiene 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::FileHandlerque apunte al archivo de destino. - Almacene el objeto
mip::ProtectionHandlerexpuesto por el métodomip::FileHandlerdeGetProtection(). - Compruebe que el usuario tiene los derechos EDIT llamando al método
AccessCheck(). - Use
mip::FileHandleroGetDecryptedTemporaryFileAsync()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::FileHandlerque apunte al archivo temporal y use el métodoSetProtection(), proporcionando elmip::ProtectionHandleralmacenado a modo de parámetro. - Confirme el cambio.
mip::ProtectionHandler Usando el archivo original, se mantienen el propietario, el ID de contenido y la clave de contenido 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 serializada. En este caso de uso, la licencia de publicación se usa al descifrar contenido ya protegido o al proteger el contenido en el que ya se ha construido la licencia.
mip::FileHandler expone un método denominado GetProtection() que recupera 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, utilice GetDecryptedTemporaryFileAsync() de mip::FileHandler para recuperar el archivo descifrado temporal.
Para obtener más información, consulte Restringir el acceso al contenido mediante etiquetas de confidencialidad para aplicar el cifrado.
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, edición o tomar 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
El archivo se puede editar después de descifrar el archivo. Una vez completada la operación de edición, se pueden confirmar los cambios. Cree un IFileHandler objeto mediante el archivo temporal para manejar el archivo confirmado. Después, el archivo temporal se puede proteger mediante el objeto IProtectionHandler recuperado a partir del archivo original.
Republicación fuera de línea
La nueva publicación puede tener lugar sin conexión cuando la caché de licencias de publicación está disponible. Si la aplicación ha almacenado previamente en caché las plantillas y los datos de licencia de publicación a través de la publicación sin conexión, el flujo de trabajo de republicación no requiere una conexión activa al servicio Rights Management.
Esto es útil en escenarios en los que:
- La aplicación debe funcionar en entornos conectados intermitentemente.
- Las operaciones de gran tamaño por lotes deben republicarse sin realizar llamadas de servicio individuales para cada documento.
- Se desea un mejor rendimiento evitando las llamadas de servicio.
Asegúrese de que la publicación sin conexión está habilitada y las plantillas se almacenan en caché antes de intentar volver a publicar sin conexión. Consulte Publicación sin conexión para obtener más información sobre la configuración.