Démarrage rapide : Initialisation de l’application cliente - Kit de développement logiciel (SDK) de stratégie (C#)

Ce guide de démarrage rapide vous montre comment implémenter le modèle d’initialisation du client utilisé par le wrapper .NET du SDK MIP pour le Kit de développement logiciel (SDK) de stratégie au moment de l’exécution.

Note

Les étapes décrites dans ce guide de démarrage rapide sont requises pour toute application cliente qui utilise le SDK de stratégie MIP .NET. Ce guide de démarrage rapide doit être terminé après la mise en place et la configuration du Kit de développement logiciel (SDK) MIP.

Prerequisites

Si ce n’est déjà fait, veillez à :

Créer une solution et un projet Visual Studio

  1. Ouvrez Visual Studio 2022 ou version ultérieure, sélectionnez le menu Fichier , Nouveau, Projet.

    • Sélectionnez Application console (ciblant .NET 8 ou version ultérieure).
    • Indiquez un nom et un emplacement pour le projet.
  2. Ajoutez les packages NuGet pour le SDK de stratégie MIP et MSAL :

    • Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet, puis sélectionnez Gérer les packages NuGet....
    • Sélectionnez Parcourir, entrez « Microsoft.InformationProtection » dans la zone de recherche, puis installez le package Microsoft.InformationProtection.Policy .
    • Recherchez et installez Microsoft.Identity.Client.

Implémenter un délégué d’authentification

  1. Ajoutez une nouvelle classe nommée 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. Ajoutez une nouvelle classe nommée ConsentDelegateImplementation:

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

Initialisez le profil de stratégie et le moteur

  1. Mettre à jour Program.cs pour créer le MipContext, charger un PolicyProfile et ajouter un 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. Compiler et tester. L’application doit initialiser et se connecter au service de politique.

Étapes suivantes