Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве показано, как реализовать шаблон инициализации клиента, используемый оболочкой пакета SDK MIP для .NET во время выполнения.
Замечание
Действия, описанные в этом кратком руководстве, необходимы для любого клиентского приложения, использующего файлы, политики или пакеты SDK защиты MIP .NET. Хотя в этом кратком руководстве показано использование SDK для работы с файлами, тот же самый шаблон применим и к клиентам, использующим SDK для политики и защиты. Будущие краткие руководства должны выполняться поочерёдно, так как каждое из них основывается на предыдущем, а это является первым. Этот код предназначен для демонстрации начала работы с пакетом SDK MIP и не предназначен для использования в рабочей среде.
Предпосылки
Если вы еще не сделали этого, обязательно выполните следующие действия.
- Выполните действия, описанные в настройке и конфигурации пакета SDK Microsoft Information Protection (MIP). Это краткое руководство по инициализации клиентского приложения зависит от правильной настройки пакета SDK.
- Необязательно:
- Просмотрите объекты профиля и движка. Объекты профиля и движка — это универсальные понятия, необходимые клиентам, использующим SDK для MIP-файлов, политик и защиты.
- Ознакомьтесь с концепциями проверки подлинности , чтобы узнать, как проверка подлинности и согласие реализованы пакетом SDK и клиентским приложением.
Создание решения и проекта Visual Studio
Сначала мы создадим и настроим исходное решение и проект Visual Studio, на основе которых будут разрабатываться другие быстрые руководства.
Откройте Visual Studio 2019, выберите меню "Файл ", "Создать", "Проект". В диалоговом окне "Новый проект ":
В области слева в разделе "Установлен", Visual C# выберите "Рабочий стол Windows".
В центральной области выберите консольное приложение (.NET Framework)
В нижней области обновите имя проекта, расположение и соответствующее имя содержащего решения .
По завершении нажмите кнопку "ОК " в правом нижнем углу.
Добавьте пакет NuGet для пакета SDK для файлов MIP в проект:
- В обозревателе решений щелкните правой кнопкой мыши узел проекта (непосредственно в верхнем узле или узле решения) и выберите пункт "Управление пакетами NuGet..."
- Когда откроется вкладка Диспетчер пакетов NuGet в области вкладок группы редакторов:
- Выберите Обзор.
- В поле поиска введите "Microsoft.InformationProtection".
- Выберите пакет Microsoft.InformationProtection.File.
- Нажмите кнопку "Установить", а затем нажмите кнопку "ОК" при отображении диалогового окна подтверждения изменений предварительного просмотра .
Повторите описанные выше действия для добавления пакета ПАКЕТА SDK для файлов MIP, но вместо этого добавьте в приложение "Microsoft.Identity.Client".
Внедрить делегата проверки подлинности
Пакет SDK MIP реализует проверку подлинности с помощью расширяемости классов, что позволяет совместно использовать задачу аутентификации с клиентским приложением. Клиент должен получить подходящий токен доступа OAuth2 и предоставить его SDK MIP во время выполнения.
Теперь создайте реализацию для делегата проверки подлинности, расширив интерфейс пакета SDK Microsoft.InformationProtection.IAuthDelegate и переопределяя или реализуя виртуальную IAuthDelegate.AcquireToken() функцию. Делегат проверки подлинности создается и позже используется объектами FileProfile и FileEngine.
Щелкните правой кнопкой мыши имя проекта в Visual Studio, выберите "Добавить" и "Класс".
В поле "Имя " введите "AuthDelegateImplementation". Нажмите кнопку Добавить.
Добавьте директивы using для библиотеки аутентификации Microsoft (MSAL) и библиотеки MIP:
using Microsoft.InformationProtection; using Microsoft.Identity.Client;Задайте
AuthDelegateImplementationдля наследованияMicrosoft.InformationProtection.IAuthDelegateи реализации частной переменнойMicrosoft.InformationProtection.ApplicationInfoи конструктора, который принимает тот же тип.public class AuthDelegateImplementation : IAuthDelegate { private ApplicationInfo _appInfo; // Microsoft Authentication Library IPublicClientApplication private IPublicClientApplication _app; public AuthDelegateImplementation(ApplicationInfo appInfo) { _appInfo = appInfo; } }Объект
ApplicationInfoсодержит три свойства. Он_appInfo.ApplicationIdбудет использоваться в классеAuthDelegateImplementation, чтобы предоставить библиотеке аутентификации идентификатор клиента.ApplicationNameиApplicationVersionбудет отображаться в отчетах аудита Microsoft Purview.public string AcquireToken()Добавьте метод. Этот метод должен приниматьMicrosoft.InformationProtection.Identity, а также три строки: URL-адрес полномочий, URI ресурса и утверждения, если требуется. Эти строковые переменные будут переданы в библиотеку проверки подлинности API и не должны управляться. Введите GUID арендатора на портале Azure для вашего арендатора. Изменение строк, кроме GUID арендатора, может привести к неудаче аутентификации.public string AcquireToken(Identity identity, string authority, string resource, string claims) { var authorityUri = new Uri(authority); authority = String.Format("https://{0}/{1}", authorityUri.Host, "<Tenant-GUID>"); _app = PublicClientApplicationBuilder.Create(_appInfo.ApplicationId).WithAuthority(authority).WithDefaultRedirectUri().Build(); var accounts = (_app.GetAccountsAsync()).GetAwaiter().GetResult(); // Append .default to the resource passed in to AcquireToken(). string[] scopes = new string[] { resource[resource.Length - 1].Equals('/') ? $"{resource}.default" : $"{resource}/.default" }; var result = _app.AcquireTokenInteractive(scopes).WithAccount(accounts.FirstOrDefault()).WithPrompt(Prompt.SelectAccount) .ExecuteAsync().ConfigureAwait(false).GetAwaiter().GetResult(); return result.AccessToken; }
Внедрение делегата согласия
Теперь создайте реализацию для делегата согласия, расширив интерфейс SDK Microsoft.InformationProtection.IConsentDelegate и переопределите/реализуйте GetUserConsent(). Делегат согласия создается и используется позже объектами профиля файлов и обработчика файлов. Делегату согласия предоставляется адрес сервиса, на использование которого пользователь должен дать согласие в параметре url. Как правило, делегат должен предоставить некоторый поток, позволяющий пользователю принять или отклонить согласие на доступ к службе. Для этого краткого руководства по жесткому коду Consent.Accept.
Используя ту же функцию Visual Studio "Добавить класс", которую мы использовали ранее, добавьте другой класс в проект. В этот раз введите "ConsentDelegateImplementation" в поле «Имя класса».
Теперь обновите ConsentDelegateImpl.cs , чтобы реализовать новый класс делегата согласия. Добавьте инструкцию using для
Microsoft.InformationProtectionи установите класс для наследованияIConsentDelegate.class ConsentDelegateImplementation : IConsentDelegate { public Consent GetUserConsent(string url) { return Consent.Accept; } }При необходимости попытайтесь создать решение, чтобы убедиться, что он компилируется без ошибок.
Инициализация управляемой оболочки MIP SDK
В обозревателе решений откройте файл .cs в проекте, который содержит реализацию
Main()метода. По умолчанию используется то же имя, что и проект, содержащий его, указанный во время создания проекта.Удалите созданную реализацию
main().Управляемая оболочка включает статический класс
Microsoft.InformationProtection.MIP, используемый для инициализации, созданияMipContext, загрузки профилей и освобождения ресурсов. Чтобы инициализировать оболочку SDK для работы с файлами, вызовитеMIP.Initialize(), передаваяMipComponent.Fileдля загрузки необходимых библиотек.В
Main()Program.cs добавьте следующий код, заменив <идентификатор> приложения идентификатором созданной ранее регистрации приложений Microsoft Entra.
using System;
using System.Threading.Tasks;
using Microsoft.InformationProtection;
using Microsoft.InformationProtection.Exceptions;
using Microsoft.InformationProtection.File;
using Microsoft.InformationProtection.Protection;
namespace mip_sdk_dotnet_quickstart
{
class Program
{
private const string clientId = "<application-id>";
private const string appName = "<friendly-name>";
static void Main(string[] args)
{
//Initialize Wrapper for File SDK operations
MIP.Initialize(MipComponent.File);
}
}
}
Создайте профиль файла и движок
Как упоминалось, для клиентов пакета SDK с использованием API MIP требуются объекты профиля и движка. Выполните часть кодирования этого краткого руководства, добавив код для загрузки родных библиотек DLL, а затем инициализируйте объекты профиля и движка.
using System;
using System.Threading.Tasks;
using Microsoft.InformationProtection;
using Microsoft.InformationProtection.File;
namespace mip_sdk_dotnet_quickstart
{
class Program
{
private const string clientId = "<application-id>";
private const string appName = "<friendly-name>";
static void Main(string[] args)
{
// Initialize Wrapper for File SDK operations.
MIP.Initialize(MipComponent.File);
// Create ApplicationInfo, setting the clientID from Microsoft Entra App Registration as the ApplicationId.
ApplicationInfo appInfo = new ApplicationInfo()
{
ApplicationId = clientId,
ApplicationName = appName,
ApplicationVersion = "1.0.0"
};
// Instantiate the AuthDelegateImpl object, passing in AppInfo.
AuthDelegateImplementation authDelegate = new AuthDelegateImplementation(appInfo);
// Create MipConfiguration Object
MipConfiguration mipConfiguration = new MipConfiguration(appInfo, "mip_data", LogLevel.Trace, false);
// Create MipContext using Configuration
MipContext mipContext = MIP.CreateMipContext(mipConfiguration);
// Initialize and instantiate the File Profile.
// Create the FileProfileSettings object.
// Initialize file profile settings to create/use local state.
var profileSettings = new FileProfileSettings(mipContext,
CacheStorageType.OnDiskEncrypted,
new ConsentDelegateImplementation());
// Load the Profile async and wait for the result.
var fileProfile = Task.Run(async () => await MIP.LoadFileProfileAsync(profileSettings)).Result;
// Create a FileEngineSettings object, then use that to add an engine to the profile.
// This pattern sets the engine ID to user1@tenant.com, then sets the identity used to create the engine.
var engineSettings = new FileEngineSettings("user1@tenant.com", authDelegate, "", "en-US");
engineSettings.Identity = new Identity("user1@tenant.com");
var fileEngine = Task.Run(async () => await fileProfile.AddEngineAsync(engineSettings)).Result;
// Application Shutdown
// handler = null; // This will be used in later quick starts.
fileEngine = null;
fileProfile = null;
mipContext.ShutDown();
mipContext = null;
}
}
}
Замените значения заполнителей в исходном коде, вставляемом вами, с помощью следующих значений:
Замещающее поле Ценность Пример <идентификатор приложения> Идентификатор приложения Microsoft Entra, назначенный приложению, зарегистрированным в разделе "Настройка и конфигурация пакета SDK MIP" (2 экземпляра). 0edbblll-8773-44de-b87c-b8c6276d41eb <понятное имя> Пользовательское понятное имя для вашего приложения. Инициализация приложения <GUID арендатора> Tenant-ID для клиента Microsoft Entra TenantID Теперь выполните окончательную сборку приложения и устраните все ошибки. Код должен успешно выполнить сборку.
Дальнейшие шаги
Теперь, когда код инициализации завершен, вы готовы к следующему этапу быстрого начала, где вы начнете изучать инструментарий SDK файлов MIP.