Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве рассматривается обработка операции понижения ярлыка, когда политика ярлыков требует обоснования. Далее мы будем использовать интерфейс IFileHandler для изменения ярлыков файла. Дополнительные сведения см. в справочнике по API.
Предпосылки
Если вы еще не сделали этого, перед продолжением обязательно выполните следующие предварительные требования:
- Завершите Краткое руководство: Установка и получение меток конфиденциальности (C#), чтобы создать начальное решение для Visual Studio, в котором перечислены метки конфиденциальности организации, а также настроены и прочитаны метки конфиденциальности в файл и из файла. В этом "Быстром руководстве: Понижение или удаление метки, требующей обоснования в C#" мы продолжаем от предыдущего.
- По желанию: ознакомьтесь с File handlers concepts в концепциях MIP SDK.
Добавьте логику для установки более низкой метки защищенного файла.
Добавьте логику для задания метки конфиденциальности в файле с помощью объекта обработчика файлов.
Откройте решение Visual Studio, созданное в предыдущем разделе "Краткое руководство. Установка и получение меток конфиденциальности(C#).
В обозревателе решений откройте файл .cs в проекте, который содержит реализацию
Main()метода. По умолчанию используется то же имя, что и проект, содержащий его, указанный во время создания проекта.Обновите значение
<label-id>из предыдущего быстрого запуска до уровня конфиденциальности, который требует обоснования для понижения. Во время этого быстрого запуска мы сначала установим этот ярлык, а затем попробуем уменьшить его с помощью фрагментов кода на следующих этапах.Ближе к концу
Main()основного текста, нижеConsole.ReadKey()и выше блока завершения работы приложения (где вы остановились в предыдущем кратком руководстве), вставьте следующий код.//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();В конце main() найдите блок завершения работы приложения, созданный в предыдущем кратком руководстве, и добавьте приведенные ниже строки обработчика для освобождения ресурсов.
downgradeHandler = null; commitHandler = null;Замените значения заполнителей в исходном коде следующими значениями:
Замещающее поле Ценность <помеченный пониженного уровня вывод> Путь к выходному файлу, куда вы хотите сохранить измененный файл. <новый-идентификатор-ярлыка> Идентификатор шаблона, скопированный из выходных данных консоли в предыдущем Quickstart-е, например: bb7ed207-046a-4caf-9826-647cff56b990Убедитесь, что его уровень чувствительности ниже, чем у ранее защищенной метки файла.
Создание и тестирование приложения
Создайте и протестируйте клиентское приложение.
Используйте CTRL-SHIFT-B (Построить решение) для создания клиентского приложения. Если у вас нет ошибок сборки, используйте F5 (начать отладку) для запуска приложения.
Если проект успешно собирается и запускается, приложение может запрашивать аутентификацию с помощью библиотеки аутентификации Microsoft (MSAL) каждый раз, когда пакет SDK вызывает ваш
AcquireToken()метод. Если кэшированные учетные данные уже существуют, вам не будет предложено войти в систему и просмотреть список меток, а затем сведения о примененной метке и измененном файле.
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.
Обратите внимание, что аналогичный подход также применяется к DeleteLabel() операции, если для удаления метки из файла требуется обоснование в отношении политики меток.
DeleteLabel() функция вызывает JustificationRequiredException исключение, и в обработке исключений IsDowngradeJustified флаг следует установить в значение true перед успешным удалением метки.