Quickstart: Initialisatie van clienttoepassingen (C#)

In deze quickstart ziet u hoe u het clientinitialisatiepatroon implementeert dat de MIP SDK .NET wrapper tijdens runtime gebruikt.

Opmerking

Voor elke clienttoepassing die gebruikmaakt van de MIP .NET wrapper's File, Policy of Protection SDK's zijn de stappen vereist die in deze quickstart worden beschreven. Hoewel in deze quickstart het gebruik van de Bestands-SDK's wordt gedemonstreert, geldt ditzelfde patroon voor clients die gebruikmaken van de SDK's voor beleid en beveiliging. Voltooi toekomstige quickstarts serieel, omdat elke quickstart voortbouwt op de vorige, waarbij dit de eerste is. Deze code is bedoeld om aan de slag te gaan met de MIP SDK en is niet bedoeld voor productiegebruik.

Vereiste voorwaarden

Als u dat nog niet hebt gedaan, moet u het volgende doen:

Een Visual Studio-oplossing en -project maken

Maak en configureer eerst de eerste Visual Studio oplossing en het project waarop de andere quickstarts worden gebouwd.

  1. Open Visual Studio 2022 of hoger en selecteer het menu Bestand , Nieuw, Project. In het dialoogvenster Nieuw project :

    • Selecteer Windows Desktop in het linkerdeelvenster onder Geïnstalleerd, Visual C#.

    • Selecteer console-app in het middelste deelvenster (gericht op .NET 8 of hoger).

    • Werk in het onderste deelvenster de projectnaam, locatie en de naam van de oplossing dienovereenkomstig bij.

    • Wanneer u klaar bent, klikt u op de knop OK in de rechterbenedenhoek.

      Visual Studio oplossing maken.

  2. Voeg het NuGet-pakket voor de MIP File SDK toe aan uw project:

    • Klik in Solution Explorer met de rechtermuisknop op het projectknooppunt (direct onder het bovenste/ oplossingsknooppunt) en selecteer NuGet-pakketten beheren...:
    • Wanneer het tabblad NuGet Pakketbeheer wordt geopend in het gebied Tabbladen Editorgroep:
      • Selecteer Bladeren.
      • Voer 'Microsoft.InformationProtection' in het zoekvak in.
      • Selecteer het pakket Microsoft.InformationProtection.File.
      • Klik op Installeren en klik vervolgens op OK wanneer het bevestigingsvenster voor wijzigingen in het voorbeeld wordt weergegeven.
  3. Herhaal de bovenstaande stappen voor het toevoegen van het MIP File SDK-pakket, maar voeg in plaats daarvan 'Microsoft.Identity.Client' toe aan de toepassing.

Een verificatiedelegatie implementeren

De MIP SDK implementeert verificatie met behulp van klasse-uitbreidbaarheid. Dit biedt een mechanisme voor het delen van verificatie met de clienttoepassing. De client moet een geschikt OAuth2-toegangstoken verkrijgen en deze tijdens runtime aan de MIP SDK verstrekken.

Maak nu een implementatie voor een verificatiedelegatie door de interface van Microsoft.InformationProtection.IAuthDelegate de SDK uit te breiden en de IAuthDelegate.AcquireToken() virtuele functie te overschrijven of te implementeren. De FileProfile- en FileEngine-objecten instantiëren en gebruiken later nog de authenticatie-delegate.

  1. Klik met de rechtermuisknop op de projectnaam in Visual Studio en selecteer Vervolgens Klasse toevoegen.

  2. Voer 'AuthDelegateImplementation' in het veld Naam in. Klik op Toevoegen.

  3. Gebruiksinstructies toevoegen voor de Microsoft Authentication Library (MSAL) en de MIP-bibliotheek:

    using Microsoft.InformationProtection;
    using Microsoft.Identity.Client;
    
  4. Stel AuthDelegateImplementation in op overerven van Microsoft.InformationProtection.IAuthDelegate en implementeer een privévariabele van het type Microsoft.InformationProtection.ApplicationInfo, samen met een constructor die ditzelfde type accepteert.

    public class AuthDelegateImplementation : IAuthDelegate
    {
       private ApplicationInfo _appInfo;
       // Microsoft Authentication Library IPublicClientApplication
       private IPublicClientApplication _app;
       public AuthDelegateImplementation(ApplicationInfo appInfo)
       {
           _appInfo = appInfo;
       }
    
    }
    

    Het ApplicationInfo object bevat drie eigenschappen. De AuthDelegateImplementation klasse gebruikt _appInfo.ApplicationId om de client-id op te geven aan de verificatiebibliotheek. ApplicationNameen ApplicationVersion worden weergegeven in Microsoft Purview controlerapporten.

  5. Voeg de public string AcquireToken() methode toe. Deze methode moet accepteren Microsoft.InformationProtection.Identity en drie tekenreeksen: instantie-URL, resource-URI en claims, indien nodig. De API geeft deze tekenreeksvariabelen door aan de verificatiebibliotheek en u moet ze niet manipuleren. Voer de tenant-GUID in vanuit de Azure-portal voor uw tenant. Het bewerken van andere tekenreeksen dan de tenant-GUID kan leiden tot een fout bij het verifiëren.

    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();
    
       // Append .default to the resource passed in to AcquireToken().
       string[] scopes = new string[] { resource[resource.Length - 1].Equals('/') ? $"{resource}.default" : $"{resource}/.default" };
       var result = _app.AcquireTokenInteractive(scopes).WithAccount(accounts.FirstOrDefault()).WithPrompt(Prompt.SelectAccount)
                  .ExecuteAsync().ConfigureAwait(false).GetAwaiter().GetResult();
    
       return result.AccessToken;
    }
    
    

Maak nu een implementatie voor een toestemmingsgedelegeerde door de interface Microsoft.InformationProtection.IConsentDelegate van de SDK uit te breiden en GetUserConsent() te overschrijven of te implementeren. Het File-profiel en de File-engineobjecten instantiëren en gebruiken de toestemmingsgedelegeerde later. De gedelegeerde voor toestemming ontvangt het adres van de service waarvoor de gebruiker toestemming moet geven voor gebruik in de url parameter. De gedelegeerde moet over het algemeen een stroom opgeven waarmee de gebruiker toestemming voor toegang tot de service kan accepteren of weigeren. Voor deze quickstart code Consent.Accept.

  1. Met dezelfde Visual Studio-functie Klasse toevoegen die we eerder hebben gebruikt, voegt u een andere klasse toe aan uw project. Voer deze keer ConsentDelegateImplementation in het veld Klassenaam in.

  2. Werk nu ConsentDelegateImpl.cs bij om uw nieuwe machtigingsdelegenklasse te implementeren. Voeg de using-instructie voor Microsoft.InformationProtection toe en stel de klasse in om IConsentDelegate te erven.

    class ConsentDelegateImplementation : IConsentDelegate
    {
         public Consent GetUserConsent(string url)
         {
              return Consent.Accept;
         }
    }
    
  3. Probeer eventueel de oplossing te bouwen om ervoor te zorgen dat deze zonder fouten wordt gecompileerd.

De beheerde wrapper van de MIP SDK initialiseren

  1. Open vanuit Solution Explorer het bestand .cs in uw project dat de implementatie van de Main() methode bevat. Deze wordt standaard ingesteld op dezelfde naam als het project dat het bevat, die u hebt opgegeven tijdens het maken van het project.

  2. Verwijder de gegenereerde implementatie van main().

  3. De beheerde wrapper bevat een statische klasse die Microsoft.InformationProtection.MIP wordt gebruikt voor initialisatie, het maken van een MipContext, laadprofielen en het vrijgeven van resources. Als u de wrapper voor bestands-SDK-bewerkingen wilt initialiseren, roept u MIP.Initialize() aan en gebruikt u MipComponent.File om de benodigde bibliotheken voor bestandsbewerkingen te laden.

  4. Voeg Main() in Program.cs het volgende toe, waarbij <u de toepassings-id> vervangt door de id van de Microsoft Entra-toepassingsregistratie die u eerder hebt gemaakt.

using System;
using System.Threading.Tasks;
using Microsoft.InformationProtection;
using Microsoft.InformationProtection.Exceptions;
using Microsoft.InformationProtection.File;
using Microsoft.InformationProtection.Protection;

namespace mip_sdk_dotnet_quickstart
{
    class Program
    {
        private const string clientId = "<application-id>";
        private const string appName = "<friendly-name>";

        static void Main(string[] args)
        {
            //Initialize Wrapper for File SDK operations
            MIP.Initialize(MipComponent.File);
            
        }
    }
}

Een bestandsprofiel en -engine maken

Zoals vermeld, vereisen SDK-clients die gebruikmaken van MIP-API's profiel- en engine-objecten. Voltooi het codegedeelte van deze quickstart door code toe te voegen om de systeemeigen DLL's te laden en vervolgens het profiel- en engineobject te instantiëren.

using System;
using System.Threading.Tasks;
using Microsoft.InformationProtection;
using Microsoft.InformationProtection.File;

namespace mip_sdk_dotnet_quickstart
{
  class Program
  {
       private const string clientId = "<application-id>";
       private const string appName = "<friendly-name>";

       static void Main(string[] args)
       {
            // Initialize Wrapper for File SDK operations.
            MIP.Initialize(MipComponent.File);

            // Create ApplicationInfo, setting the clientID from Microsoft Entra App Registration as the ApplicationId.
            ApplicationInfo appInfo = new ApplicationInfo()
            {
                 ApplicationId = clientId,
                 ApplicationName = appName,
                 ApplicationVersion = "1.0.0"
            };

            // Instantiate the AuthDelegateImpl object, passing in AppInfo.
            AuthDelegateImplementation authDelegate = new AuthDelegateImplementation(appInfo);

            // Create MipConfiguration Object
            MipConfiguration mipConfiguration = new MipConfiguration(appInfo, "mip_data", LogLevel.Trace, false);

            // Create MipContext using Configuration
            MipContext mipContext = MIP.CreateMipContext(mipConfiguration);

            // Initialize and instantiate the File Profile.
            // Create the FileProfileSettings object.
            // Initialize file profile settings to create/use local state.
            var profileSettings = new FileProfileSettings(mipContext,
                                     CacheStorageType.OnDiskEncrypted,
                                     new ConsentDelegateImplementation());

            // Load the Profile async and wait for the result.
            var fileProfile = Task.Run(async () => await MIP.LoadFileProfileAsync(profileSettings)).Result;

            // Create a FileEngineSettings object, then use that to add an engine to the profile.
            // This pattern sets the engine ID to user1@tenant.com, then sets the identity used to create the engine.
            var engineSettings = new FileEngineSettings("user1@tenant.com", authDelegate, "", "en-US");
            engineSettings.Identity = new Identity("user1@tenant.com");

            var fileEngine = Task.Run(async () => await fileProfile.AddEngineAsync(engineSettings)).Result;

            // Application Shutdown
            // handler = null; // This will be used in later quick starts.
            fileEngine = null;
            fileProfile = null;
            mipContext.ShutDown();
            mipContext = null;
       }
  }
}
  1. Vervang de tijdelijke aanduidingen in de broncode die u hebt geplakt door de volgende waarden te gebruiken:

    Placeholder Waarde Voorbeeld
    <toepassings-id> De Microsoft Entra toepassings-id die is toegewezen aan de toepassing die is geregistreerd bij 'MIP SDK setup and configuration' (2 exemplaren). 00001111-aaaa-2222-bbbb-3333cccc44444
    <vriendelijke naam> Een door de gebruiker gedefinieerde gebruikersvriendelijke naam voor uw toepassing. Applicatieinitialisatie
    <Tenant-GUID> Tenant-id voor uw Microsoft Entra-tenant. TenantID
  2. Voer nu een definitieve build van de toepassing uit en los eventuele fouten op. Uw code moet succesvol worden gebouwd.

Volgende stappen 

Nu uw initialisatiecode is voltooid, bent u klaar voor de volgende quickstart, waar u de MIP-bestands-SDK's gaat ervaren.