Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku szybkiego startu przedstawiono, jak zaimplementować wzorzec inicjowania klienta używany przez otokę .NET MIP SDK dla Policy SDK podczas wykonywania.
Uwaga / Notatka
Każda aplikacja kliencka korzystająca z zestawu MIP .NET Policy SDK wymaga kroków opisanych w tym przewodniku Szybki start. Przed rozpoczęciem skonfiguruj i przygotuj MIP SDK.
Wymagania wstępne
Jeśli jeszcze tego nie zrobiono, upewnij się, że:
- Microsoft Information Protection (MIP) SDK setup and configuration (Konfiguracja i konfiguracja zestawu SDK usługi Microsoft Information Protection). Wykonaj te kroki przed rozpoczęciem tego przewodnika Szybki start.
- Opcjonalnie:
- Przejrzyj obiekty profilu i silnika.
- Zapoznaj się z pojęciami dotyczącymi uwierzytelniania.
Tworzenie rozwiązania i projektu programu Visual Studio
Otwórz program Visual Studio 2022 lub nowszy, wybierz menu Plik , Nowy, Projekt.
- Wybierz pozycję Aplikacja konsolowa (przeznaczona dla platformy .NET 8 lub nowszej).
- Podaj nazwę i lokalizację projektu.
Dodaj pakiety NuGet dla zestawu MIP Policy SDK i biblioteki MSAL:
- W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł projektu i wybierz polecenie Zarządzaj pakietami NuGet....
- Wybierz pozycję Przeglądaj, wprowadź ciąg "Microsoft.InformationProtection" w polu wyszukiwania i zainstaluj pakiet Microsoft.InformationProtection.Policy .
- Wyszukaj i zainstaluj program Microsoft.Identity.Client.
Implementowanie delegata uwierzytelniania
Dodaj nową klasę o nazwie
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; } }
Zaimplementuj delegata zgody
Dodaj nową klasę o nazwie
ConsentDelegateImplementation:using Microsoft.InformationProtection; public class ConsentDelegateImplementation : IConsentDelegate { public Consent GetUserConsent(string url) { return Consent.Accept; } }
Zainicjuj profil zasad i mechanizm
Zaktualizuj
Program.cs, aby utworzyćMipContext, załadujPolicyProfile, i dodajPolicyEngine.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.");Kompilowanie i testowanie. Aplikacja powinna zainicjować usługę Policy i nawiązać z nią połączenie.