Share via


Microsoft Information Protection File SDK - Actie-reden voor het verlagen van een vertrouwelijkheidslabel op een bestand (C#)

In deze quickstart wordt de verwerking van een downgradelabelbewerking behandeld wanneer voor het labelbeleid een reden is vereist. Hier gebruiken IFileHandler we de interface voor het wijzigen van de labels van een bestand. Raadpleeg de API-naslaginformatie voor meer informatie.

Vereisten

Als u dat nog niet hebt gedaan, moet u de volgende vereisten voltooien voordat u doorgaat:

  • Volledige quickstart: Vertrouwelijkheidslabels (C#) instellen/ophalen waarmee een eenvoudige Visual Studio-oplossing wordt gebouwd om de vertrouwelijkheidslabels van een organisatie weer te geven en vertrouwelijkheidslabels in te stellen en te lezen naar/van een bestand. Deze quickstart 'How to - Downgrade/Remove a label that needs a justification C#' is gebaseerd op de vorige.
  • Optioneel: Controleer de concepten van bestandshandlers in de MIP SDK-concepten.

Logica toevoegen om een lager label in te stellen op een beveiligd bestand

Voeg logica toe om een vertrouwelijkheidslabel in te stellen op een bestand met behulp van het object Bestandshandler.

  1. Open de Visual Studio-oplossing die u in de vorige quickstart hebt gemaakt: Vertrouwelijkheidslabels instellen/ophalen (C#).

  2. Open met Solution Explorer het .cs-bestand in uw project dat de implementatie van de Main() methode bevat. Deze wordt standaard ingesteld op dezelfde naam als het project dat het bevat, die u hebt opgegeven tijdens het maken van het project.

  3. Werk de <label-id> waarde uit de vorige quickstart bij naar een vertrouwelijkheidslabel waarvoor een reden nodig is om te verlagen. Tijdens deze quickstart stellen we eerst dit label in en proberen we het vervolgens te verlagen via codefragmenten in verdere stappen.

  4. Voeg aan het einde van de hoofdtekst, onder Console.ReadKey() en boven het afsluitblok van de Main() toepassing (waar u was gebleven in de vorige quickstart), de volgende code in.

    //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. Zoek aan het einde van Main() het afsluitblok van de toepassing dat in de vorige quickstart is gemaakt en voeg onderstaande handlerregels toe om resources vrij te geven.

    downgradeHandler = null;
    commitHandler = null;
    
  6. Vervang de tijdelijke aanduidingen in de broncode met behulp van de volgende waarden:

    Tijdelijke aanduiding Waarde
    <downgraded-labled-output> Het pad naar het uitvoerbestand waarnaar u het gewijzigde bestand wilt opslaan.
    <new-label-id> Een sjabloon-id, gekopieerd uit de console-uitvoer in de vorige quickstart, bijvoorbeeld: bb7ed207-046a-4caf-9826-647cff56b990. Zorg ervoor dat het een lagere gevoeligheid heeft dan het eerder beveiligde bestandslabel.

De toepassing bouwen en testen

Bouw en test uw clienttoepassing.

  1. Gebruik Ctrl-Shift-B (build solution) om uw clienttoepassing te bouwen. Als u geen buildfouten hebt, gebruikt u F5 (Foutopsporing starten) om uw toepassing uit te voeren.

  2. Als uw project wordt gebouwd en uitgevoerd, kan de toepassing telkens wanneer de SDK uw AcquireToken() methode aanroept, om verificatie vragen met behulp van Microsoft Authentication Library (MSAL). Als er al referenties in de cache aanwezig zijn, wordt u niet gevraagd u aan te melden en de lijst met labels te zien, gevolgd door de informatie over het toegepaste label en het gewijzigde bestand.

  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.

Houd er rekening mee dat een vergelijkbare benadering ook van toepassing is op DeleteLabel() de bewerking, voor het geval het label dat uit een bestand wordt verwijderd, een reden vereist volgens het labelbeleid.DeleteLabel() met de functie wordt een JustificationRequiredException uitzondering gegenereerd en IsDowngradeJustified moet de vlag worden ingesteld op true in de afhandeling van uitzonderingen voordat een label wordt verwijdert.