Microsoft Information Protection SDK - Guida introduttiva alla ripubblicazione di File SDK (C#)

Panoramica

Per una panoramica su questo scenario e su dove può essere usato, vedere Ripubblicazione in MIP SDK.

Prerequisiti

Se non è già stato fatto, assicurarsi di completare i prerequisiti seguenti prima di continuare:

  • Completare Avvio rapido: Impostare/ottenere le etichette di riservatezza (C#), che compila prima una soluzione visual Studio iniziale, per elencare le etichette di riservatezza di un'organizzazione, per impostare e leggere le etichette di riservatezza da e verso un file. Questa guida introduttiva "Procedura - Ripubblicare un file protetto - C#" si basa su quella precedente.
  • Facoltativamente: esaminare i gestori di file nei concetti di MIP SDK.
  • Facoltativamente: esaminare i gestori di protezione nei concetti di MIP SDK.

Aggiungere la logica per modificare e ripubblicare un file protetto

  1. Aprire la soluzione di Visual Studio creata nell'articolo precedente "Guida introduttiva: Impostare/ottenere etichette di riservatezza(C#)".

  2. Usando Esplora soluzioni, aprire il file con estensione cs nel progetto che contiene l'implementazione del Main() metodo . Per impostazione predefinita, il nome del progetto che lo contiene è stato specificato durante la creazione del progetto.

  3. Verso la fine del corpo, sotto Console.ReadKey() e sopra il Main() blocco di arresto dell'applicazione (dove è stata interrotta la guida introduttiva precedente), inserire il codice seguente.

string protectedFilePath = "<protected-file-path>" // Originally protected file's path from previous quickstart.

//Create a fileHandler for consumption for the Protected File.
var protectedFileHandler = Task.Run(async () => 
                            await fileEngine.CreateFileHandlerAsync(protectedFilePath,// inputFilePath
                                                                    protectedFilePath,// actualFilePath
                                                                    false, //isAuditDiscoveryEnabled
                                                                    null)).Result; // fileExecutionState

// Store protection handler from file
var protectionHandler = protectedFileHandler.Protection;

//Check if the user has the 'Edit' right to the file
if (protectionHandler.AccessCheck("Edit"))
{
    // Decrypt file to temp path
    var tempPath = Task.Run(async () => await protectedFileHandler.GetDecryptedTemporaryFileAsync()).Result;

    /*
        Your own application code to edit the decrypted file belongs here. 
    */

    /// Follow steps below for re-protecting the edited file. ///
    // Create a new file handler using the temporary file path.
    var republishHandler = Task.Run(async () => await fileEngine.CreateFileHandlerAsync(tempPath, tempPath, false)).Result;

    // Set protection using the ProtectionHandler from the original consumption operation.
    republishHandler.SetProtection(protectionHandler);

    // New file path to save the edited file
    string reprotectedFilePath = "<reprotected-file-path>" // New file path for saving reprotected file.

    // Write changes
    var reprotectedResult = Task.Run(async () => await republishHandler.CommitAsync(reprotectedFilePath)).Result;

    var protectedLabel = protectedFileHandler.Label;
    Console.WriteLine(string.Format("Originally protected file: {0}", protectedFilePath));
    Console.WriteLine(string.Format("File LabelID: {0} \r\nProtectionOwner: {1} \r\nIsProtected: {2}", 
                        protectedLabel.Label.Id, 
                        protectedFileHandler.Protection.Owner, 
                        protectedLabel.IsProtectionAppliedFromLabel.ToString()));
    var reprotectedLabel = republishHandler.Label;
    Console.WriteLine(string.Format("Reprotected file: {0}", reprotectedFilePath));
    Console.WriteLine(string.Format("File LabelID: {0} \r\nProtectionOwner: {1} \r\nIsProtected: {2}", 
                        reprotectedLabel.Label.Id, 
                        republishHandler.Protection.Owner, 
                        reprotectedLabel.IsProtectionAppliedFromLabel.ToString()));
    Console.WriteLine("Press a key to continue.");
    Console.ReadKey();
}
  1. Verso la fine di Main() trovare il blocco di arresto dell'applicazione creato nella guida introduttiva precedente e aggiungere le righe del gestore seguenti per rilasciare le risorse.

        protectedFileHandler = null;
        protectionHandler = null;
    
  2. Sostituire i valori segnaposto nel codice sorgente usando i valori seguenti:

    Segnaposto Valore
    <protected-file-path> File protetto dalla guida introduttiva precedente.
    <riprotezione-file-path> Percorso del file di output per il file modificato da ripubblicare.

Compilare e testare l'applicazione

Compilare e testare l'applicazione client.

  1. Usare CTRL-MAIUSC-B (Compila soluzione) per compilare l'applicazione client. Se non sono presenti errori di compilazione, usare F5 (Avvia debug) per eseguire l'applicazione.

  2. Se il progetto viene compilato ed eseguito correttamente, l'applicazione potrebbe richiedere l'autenticazione usando Microsoft Authentication Library (MSAL) ogni volta che l'SDK chiama il AcquireToken() metodo. Se le credenziali memorizzate nella cache esistono già, non verrà richiesto di accedere e visualizzare l'elenco delle etichette, seguite dalle informazioni sull'etichetta applicata e sul file modificato.

  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_protected.docx
  File Label: Confidential
  IsProtected: True
  Press a key to continue.
  Originally protected file: C:\Test\Test_protected.docx
  File LabelID: 569af77e-61ea-4deb-b7e6-79dc73653959
  ProtectionOwner: User1@Contoso.OnMicrosoft.com
  IsProtected: True
  Reprotected file: C:\Test\Test_reprotected.docx
  File LabelID: 569af77e-61ea-4deb-b7e6-79dc73653959
  ProtectionOwner: User1@Contoso.OnMicrosoft.com
  IsProtected: True
  Press a key to continue.