Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве показано, как реализовать шаблон инициализации клиента, используемый оболочкой .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); 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, consentDelegate); var profile = MIP.LoadPolicyProfileAsync(profileSettings).GetAwaiter().GetResult(); // Create PolicyEngine var engineSettings = new PolicyEngineSettings( identity: new Identity("<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.");Сборка и тестирование. Приложение должно инициализировать и подключиться к службе политики.