SDK de archivo de Microsoft Information Protection: justificación de acción para reducir una etiqueta de confidencialidad en un archivo (C#)

Este inicio rápido trata sobre el control de una operación de etiqueta de cambio de una versión anterior cuando la directiva de etiqueta requiere justificación. Aquí se usa la interfaz IFileHandler para cambiar las etiquetas de un archivo. Para obtener más información, vea Referencia de API.

Requisitos previos

Si aún no lo ha hecho, asegúrese de completar los siguientes requisitos previos antes de continuar:

Incorporación de 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.

  1. Abra la solución de Visual Studio que se ha creado en el artículo anterior "Inicio rápido: Establecer y obtener etiquetas de confidencialidad (C#)".

  2. Con el Explorador de soluciones, abra el archivo .cs en el proyecto que contiene la implementación del método Main(). El valor predeterminado es el mismo nombre que el proyecto que lo contiene, el cual ha especificado al crear el proyecto.

  3. Actualice el valor <label-id> del inicio rápido anterior a una etiqueta de confidencialidad que requiera justificación para la reducción. Durante la ejecución de esta guía de inicio rápido, primero se establece esta etiqueta y luego se intenta reducir por medio de fragmentos de código en pasos adicionales.

  4. Hacia el final del cuerpo Main(), debajo de Console.ReadKey() y encima del bloque de apagado de la aplicación (donde se quedó 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();
    
    
  5. Hacia el final de Main(), busque el bloque de cierre de la aplicación creado en el anterior inicio rápido y agregue debajo líneas de controlador para liberar los recursos.

    downgradeHandler = null;
    commitHandler = null;
    
  6. Reemplace los valores de marcador de posición en el código fuente por los valores siguientes:

    Marcador Valor
    <downgraded-labled-output> Ruta de acceso del archivo de salida en el que quiere guardar el archivo modificado.
    <new-label-id> Un identificador de etiqueta, que se copia de la salida de la consola en el inicio rápido anterior, por ejemplo: bb7ed207-046a-4caf-9826-647cff56b990. Asegúrese de que tenga una sensibilidad inferior a la de la etiqueta de archivo previamente protegida.

Compilar y probar la aplicación

Compile y pruebe la aplicación cliente.

  1. Presione CTRL-SHIFT-B (Compilar solución) para compilar la aplicación cliente. Si no aparece ningún error de compilación, presione F5 (Iniciar depuración) para ejecutar la aplicación.

  2. Si el proyecto se compila y se ejecuta correctamente, la aplicación podría solicitar autenticación vía ADAL cada vez que el SDK llame al método . Si ya existen credenciales almacenadas en caché, no se le pedirá que inicie sesión y vea la lista de etiquetas, seguido 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 se debe seguir un enfoque similar para la operación DeleteLabel(), en caso de que la etiqueta que se va a eliminar de un archivo requiera una justificación según la directiva de etiqueta. La funciónDeleteLabel() lanza una excepción JustificationRequiredException y la marca IsDowngradeJustified debe establecerse en true en el control de excepciones antes de eliminar la etiqueta correctamente.