Guida rapida: Inizializzazione dell'applicazione client - SDK Policy (C#)

Questa guida introduttiva illustra come implementare il modello di inizializzazione client usato dal wrapper .NET di MIP SDK per Policy SDK in fase di esecuzione.

Annotazioni

Qualsiasi applicazione client che usa MIP .NET Policy SDK richiede i passaggi descritti in questa guida introduttiva. Completa Configurazione e impostazione di MIP SDK prima di iniziare.

Prerequisiti

Se non è già stato fatto, assicurarsi di:

Creare una soluzione e un progetto di Visual Studio

  1. Aprire Visual Studio 2022 o versione successiva, selezionare il menu File , Nuovo, Progetto.

    • Selezionare App console (destinata a .NET 8 o versione successiva).
    • Specificare un nome e un percorso per il progetto.
  2. Aggiungere i pacchetti NuGet per MIP Policy SDK e MSAL:

    • In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Gestisci pacchetti NuGet.
    • Selezionare Sfoglia, immettere "Microsoft.InformationProtection" nella casella di ricerca e installare il pacchetto Microsoft.InformationProtection.Policy .
    • Cercare e installare Microsoft.Identity.Client.

Implementare un delegato di autenticazione

  1. Aggiungere una nuova classe denominata 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. Aggiungere una nuova classe denominata ConsentDelegateImplementation:

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

Inizializzare il profilo e il motore della politica

  1. Aggiorna Program.cs per creare MipContext, carica un PolicyProfile e aggiungi 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.");
    
  2. Compilare e testare. L'applicazione deve inizializzare e connettersi al servizio di policy.

Passaggi successivi