Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве показано, как реализовать шаблон инициализации клиента, используемый оболочкой .NET MIP SDK для Policy SDK во время выполнения.
Замечание
Для любого клиентского приложения, использующего пакет SDK политики MIP .NET, необходимо выполнить действия, описанные в этом кратком руководстве. Перед началом работы завершите настройку и настройте пакет SDK MIP .
Необходимые условия
Если вы еще не сделали этого, обязательно выполните следующие действия.
- настройка и настройка пакета SDK Microsoft Information Protection (MIP). Выполните эти действия перед началом работы с этим кратким руководством.
- Необязательно:
- Просмотрите объекты профиля и движка.
- Ознакомьтесь с основными понятиями проверки подлинности.
Создание решения и проекта Visual Studio
Откройте Visual Studio 2022 или более поздней версии, выберите меню "Файл ", "Создать", " Проект".
- Выберите консольное приложение (нацеливание на .NET 8 или более поздней версии).
- Укажите имя и расположение проекта.
Установите пакеты NuGet для MIP Policy SDK и MSAL.
- В Обозреватель решений щелкните правой кнопкой мыши узел проекта и выберите пункт "Управление пакетами NuGet...".
- Выберите Обзор, введите "Microsoft.InformationProtection" в поле поиска и установите пакет Microsoft.InformationProtection.Policy.
- Найдите и установите Microsoft.Identity.Client.
Внедрить делегата проверки подлинности
Добавление нового класса с именем
AuthDelegateImplementation:using Microsoft.InformationProtection; using Microsoft.Identity.Client; public class AuthDelegateImplementation : IAuthDelegate { private ApplicationInfo _appInfo; private IPublicClientApplication _app; public AuthDelegateImplementation(ApplicationInfo appInfo) { _appInfo = appInfo; } 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(); string[] scopes = new string[] { resource.EndsWith('/') ? $"{resource}.default" : $"{resource}/.default" }; var result = _app.AcquireTokenInteractive(scopes) .WithAccount(accounts.FirstOrDefault()) .WithPrompt(Prompt.SelectAccount) .ExecuteAsync() .ConfigureAwait(false) .GetAwaiter() .GetResult(); return result.AccessToken; } }
Реализовать делегата согласия
Добавление нового класса с именем
ConsentDelegateImplementation:using Microsoft.InformationProtection; public class ConsentDelegateImplementation : IConsentDelegate { public Consent GetUserConsent(string url) { return Consent.Accept; } }
Инициализируйте профиль политик и движок.
Обновление
Program.csдля созданияMipContext, загрузкиPolicyProfileи добавленияPolicyEngine:using Microsoft.InformationProtection; using Microsoft.InformationProtection.Policy; // Application info for Microsoft Entra app registration ApplicationInfo appInfo = new ApplicationInfo() { ApplicationId = "<application-id>", ApplicationName = "MIP SDK Policy Quickstart", ApplicationVersion = "1.0" }; // Create MipConfiguration and MipContext var mipConfiguration = new MipConfiguration(appInfo, "mip_data", LogLevel.Trace, false, CacheStorageType.OnDiskEncrypted); var mipContext = MIP.CreateMipContext(mipConfiguration); // Create auth and consent delegates var authDelegate = new AuthDelegateImplementation(appInfo); var consentDelegate = new ConsentDelegateImplementation(); // Create PolicyProfile var profileSettings = new PolicyProfileSettings(mipContext, CacheStorageType.OnDiskEncrypted); var profile = MIP.LoadPolicyProfileAsync(profileSettings).GetAwaiter().GetResult(); // Create PolicyEngine var engineSettings = new PolicyEngineSettings( id: "<user@contoso.com>", authDelegate: authDelegate, clientData: "", locale: "en-US") { Identity = new Identity("<user@contoso.com>") }; var engine = profile.AddEngineAsync(engineSettings).GetAwaiter().GetResult(); Console.WriteLine("Policy engine loaded successfully.");Сборка и тестирование. Приложение должно инициализировать и подключиться к службе политики.