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.
En esta guía rápida se aborda cómo gestionar una operación de degradación de etiquetas cuando la política de etiquetas requiere justificación. Aquí, utilizaremos la interfaz IFileHandler para cambiar las etiquetas de un archivo. Para obtener más información, consulte la referencia de API.
Prerrequisitos
Si aún no lo ha hecho, asegúrese de completar los siguientes requisitos previos antes de continuar:
- Completa la Guía de inicio rápido: Establecer y obtener etiquetas de confidencialidad (C#), que compila una solución inicial de Visual Studio para enumerar las etiquetas de confidencialidad de una organización y para establecer y leer etiquetas de confidencialidad desde un archivo. Este inicio rápido "Degradación o eliminación de una etiqueta que necesita una justificación (C#)" se basa en el anterior.
- Opcionalmente, revise los conceptos sobre controladores de archivos en el SDK de MIP.
Agregar lógica para establecer una etiqueta inferior en un archivo protegido
Agregue lógica para establecer una etiqueta de confidencialidad en un archivo mediante el objeto de controlador de archivos.
Abra la solución de Visual Studio que ha creado en el artículo anterior "Inicio rápido: Establecimiento u obtención de etiquetas de confidencialidad (C#)".
Con el Explorador de soluciones, abra el archivo .cs en el proyecto que contiene la implementación del
Main()método . El valor predeterminado es el mismo nombre que el proyecto que lo contiene, que especificó durante la creación del proyecto.Actualice el valor
<label-id>del inicio rápido anterior a una etiqueta de confidencialidad que requiera justificación para reducir su nivel. Durante esta ejecución de inicio rápido, primero estableceremos esta etiqueta y, a continuación, intentaremos reducirla a través de fragmentos de código en pasos adicionales.Hacia la parte final del cuerpo de
Main(), debajo deConsole.ReadKey()y encima del bloque de apagado de la aplicación (donde lo ha dejado en el inicio rápido anterior), inserte el código siguiente.//Set paths and label ID string lowerInput = actualOutputFilePath; string lowerActualInput = lowerInput; string newLabelId = "<new-label-id>"; string lowerOutput = "<downgraded-labled-output>"; string lowerActualOutput = lowerOutput; //Create a file handler for that file var downgradeHandler = Task.Run(async () => await fileEngine.CreateFileHandlerAsync(lowerInput, lowerActualInput, true)).Result; //Set Labeling Options LabelingOptions options = new LabelingOptions() { AssignmentMethod = AssignmentMethod.Standard }; try { //Try to set new label downgradeHandler.SetLabel(fileEngine.GetLabelById(newLabelId), options, new ProtectionSettings()); } catch (Microsoft.InformationProtection.Exceptions.JustificationRequiredException) { //Request justification from user Console.Write("Please provide justification for downgrading a label: "); string justification = Console.ReadLine(); options.IsDowngradeJustified = true; options.JustificationMessage = justification; //Set new label downgradeHandler.SetLabel(fileEngine.GetLabelById(newLabelId), options, new ProtectionSettings()); } // Commit changes, save as outputFilePath var downgradedResult = Task.Run(async () => await downgradeHandler.CommitAsync(lowerActualOutput)).Result; // Create a new handler to read the labeled file metadata var commitHandler = Task.Run(async () => await fileEngine.CreateFileHandlerAsync(lowerOutput, lowerActualOutput, true)).Result; // Get the label from output file var newContentLabel = commitHandler.Label; Console.WriteLine(string.Format("Getting the new label committed to file: {0}", lowerOutput)); Console.WriteLine(string.Format("File Label: {0} \r\nIsProtected: {1}", newContentLabel.Label.Name, newContentLabel.IsProtectionAppliedFromLabel.ToString())); Console.WriteLine("Press a key to continue."); Console.ReadKey();Hacia el final de Main(), busque el bloque de apagado de la aplicación creado en el inicio rápido anterior y agregue las líneas de controlador siguientes para liberar recursos.
downgradeHandler = null; commitHandler = null;Reemplace los valores de marcador de posición en el código fuente con los siguientes valores:
Marcador de posición Valor <downgraded-labled-output> Ruta de acceso del archivo de salida en la que desea guardar el archivo modificado. <new-label-id> Identificador de plantilla, copiado de la salida de la consola en el inicio rápido anterior, por ejemplo: bb7ed207-046a-4caf-9826-647cff56b990. Asegúrese de que tiene una sensibilidad inferior a la etiqueta de archivo protegida anteriormente.
Crear y probar la aplicación
Compile y pruebe la aplicación cliente.
Usa CTRL-SHIFT-B (Build Solution) para compilar la aplicación cliente. Si no tiene errores de compilación, use F5 (Iniciar depuración) para ejecutar la aplicación.
Si el proyecto se compila y se ejecuta correctamente, la aplicación puede solicitar la autenticación mediante la Biblioteca de autenticación de Microsoft (MSAL) cada vez que el SDK llama al
AcquireToken()método . Si ya existen credenciales almacenadas en caché, no se le pedirá que inicie sesión y vea la lista de etiquetas, seguida de la información sobre la etiqueta aplicada y el archivo modificado.
Personal : 73c47c6a-eb00-4a6a-8e19-efaada66dee6
Public : 73254501-3d5b-4426-979a-657881dfcb1e
General : da480625-e536-430a-9a9e-028d16a29c59
Confidential : 569af77e-61ea-4deb-b7e6-79dc73653959
Highly Confidential : 905845d6-b548-439c-9ce5-73b2e06be157
Press a key to continue.
Getting the label committed to file: c:\Test\Test_labeled.docx
Name: Confidential
IsProtected: True
Press any key to continue . . .
Please provide justification for downgrading a label: Lower label approved.
Getting the new label committed to file: c:\Test\Test_downgraded.docx
File Label: General
IsProtected: False
Press a key to continue.
Tenga en cuenta que el enfoque similar también se aplica a la DeleteLabel() operación; en caso de que la etiqueta que se elimine de un archivo requiera una justificación según la directiva de etiqueta. La función DeleteLabel() produce una excepción JustificationRequiredException y la marca IsDowngradeJustified debe establecerse en true en el control de excepciones para que una etiqueta se pueda eliminar correctamente.