SDK Microsoft Information Protection - Démarrage rapide pour republier le SDK File (C#)
Vue d’ensemble
Pour une vue d’ensemble de ce scénario et de son utilisation, reportez-vous à Republication dans le SDK MIP.
Prérequis
Si ce n’est déjà fait, veillez à satisfaire les prérequis suivants avant de poursuivre :
- Suivez d’abord Démarrage rapide : Définir/obtenir des étiquettes de confidentialité (C#), pour créer une solution Visual Studio de démarrage visant à lister les étiquettes de confidentialité d’une organisation, ainsi qu’à définir et lire les étiquettes de confidentialité vers/depuis un fichier. Ce Démarrage rapide « Guide pratique - Republier un fichier protégé - C# » repose sur le précédent.
- Facultatif : passez en revue les Gestionnaires de fichiers dans les concepts du SDK MIP.
- Facultatif : passez en revue les Gestionnaires de protection dans les concepts du SDK MIP.
Ajouter une logique pour modifier et republier un fichier protégé
Ouvrez la solution Visual Studio que vous avez créée dans l’article précédent, « Démarrage rapide : Définir/obtenir des étiquettes de confidentialité (C#) ».
Dans l’Explorateur de solutions, ouvrez le fichier .cs dans votre projet qui contient l’implémentation de la méthode
Main()
. Par défaut, il a le même nom que le projet qui le contient et que vous avez spécifié lors de la création du projet.Vers la fin du corps
Main()
, en dessous deConsole.ReadKey()
et au-dessus du bloc d’arrêt d’application (là où vous vous êtes arrêté dans le précédent démarrage rapide), insérez le code suivant.
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();
}
Vers la fin de Main(), recherchez le bloc d’arrêt d’application créé dans le précédent démarrage rapide et ajoutez les lignes de gestionnaire ci-dessous pour libérer les ressources.
protectedFileHandler = null; protectionHandler = null;
Remplacez les valeurs d’espace réservé dans le code source par les valeurs suivantes :
Paramètre substituable Valeur <protected-file-path> Fichier protégé du démarrage rapide précédent. <reprotected-file-path> Chemin du fichier de sortie pour republier le fichier modifié.
Concevoir et tester l’application
Générez et testez votre application cliente.
Utilisez CTRL-MAJ-B (Créer une solution) pour créer votre application cliente. Si vous n’avez aucune erreur de build, utilisez F5 (Démarrer le débogage) pour exécuter votre application.
Si votre projet est généré et exécuté correctement, l’application peut demander une authentification via Microsoft Authentication Library (MSAL) chaque fois que le kit de développement logiciel (SDK) appelle votre méthode
AcquireToken()
. Si des informations d’identification mises en cache existent déjà, vous n’êtes pas invité à vous connecter pour voir la liste des étiquettes, suivie des informations sur l’étiquette appliquée et le fichier modifié.
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.