Mulai cepat: Inisialisasi aplikasi klien - Policy SDK (C#)

Panduan ini menunjukkan kepada Anda cara menerapkan pola inisialisasi klien yang digunakan oleh pembungkus MIP SDK .NET untuk Policy SDK saat runtime.

Nota

Langkah-langkah yang diuraikan dalam panduan cepat ini diperlukan untuk aplikasi klien apa pun yang menggunakan MIP .NET Policy SDK. Panduan mulai cepat ini harus diselesaikan setelah Menyiapkan dan mengonfigurasi MIP SDK.

Prasyarat

Jika Anda belum melakukannya, pastikan untuk:

Membuat solusi dan proyek Visual Studio

  1. Buka Visual Studio 2022 atau yang lebih baru, pilih menu File , Baru, Proyek.

    • Pilih Aplikasi Konsol (menargetkan .NET 8 atau yang lebih baru).
    • Berikan Nama dan Lokasi untuk proyek.
  2. Tambahkan paket NuGet untuk SDK Kebijakan MIP dan MSAL:

    • Di Penjelajah Solusi, klik kanan simpul proyek dan pilih Kelola paket NuGet....
    • Pilih Telusuri, masukkan "Microsoft.InformationProtection" di kotak pencarian, dan instal paket Microsoft.InformationProtection.Policy .
    • Cari dan instal Microsoft.Identity.Client.

Menerapkan delegasi autentikasi

  1. Tambahkan kelas baru bernama 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;
        }
    }
    
  1. Tambahkan kelas baru bernama ConsentDelegateImplementation:

    using Microsoft.InformationProtection;
    
    public class ConsentDelegateImplementation : IConsentDelegate
    {
        public Consent GetUserConsent(string url)
        {
            return Consent.Accept;
        }
    }
    

Menginisialisasi profil Kebijakan dan mesin Kebijakan

  1. Perbarui Program.cs untuk membuat MipContext, muat PolicyProfile, dan tambahkan 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.");
    
  2. Bangun dan uji. Aplikasi harus menginisialisasi dan menyambungkan ke layanan Kebijakan.

Langkah berikutnya