Hızlı Başlangıç: İstemci uygulaması başlatma (C#)

Bu hızlı başlangıçta, çalışma zamanında MIP SDK .NET sarmalayıcısı tarafından kullanılan istemci başlatma deseninin nasıl uygulanacağı gösterilir.

Dekont

Bu hızlı başlangıçta özetlenen adımlar, MIP .NET sarmalayıcının Dosya, İlke veya Koruma SDK'larını kullanan tüm istemci uygulamaları için gereklidir. Bu Hızlı Başlangıçta Dosya SDK'larının kullanımı gösteriliyor olsa da, bu desen İlke ve Koruma SDK'larını kullanan istemciler için de geçerlidir. Gelecekteki Hızlı Başlangıçlar, her biri bir öncekini temel alır ve bu ilk hızlı başlangıç olur. Bu kod, MIP SDK'sını kullanmaya başlamayı göstermek için tasarlanmıştır ve üretim kullanımına yönelik değildir.

Ön koşullar

Henüz yapmadıysanız şunları yaptığınızdan emin olun:

  • Microsoft Information Protection (MIP) SDK kurulumu ve yapılandırmasındaki adımları tamamlayın. Bu "İstemci uygulaması başlatma" Hızlı Başlangıcı, doğru SDK kurulumuna ve yapılandırmasına dayanır.
  • Isteğe bağlı olarak:
    • Profil ve altyapı nesnelerini gözden geçirin. Profil ve altyapı nesneleri, MIP Dosya/İlke/Koruma SDK'larını kullanan istemciler için gerekli olan evrensel kavramlardır.
    • Kimlik doğrulaması ve onayın SDK ve istemci uygulaması tarafından nasıl uygulandığını öğrenmek için Kimlik doğrulama kavramlarını gözden geçirin.

Visual Studio çözümü ve projesi oluşturma

İlk olarak, diğer Hızlı Başlangıçların oluşturulacağı ilk Visual Studio çözümünü ve projesini oluşturup yapılandıracağız.

  1. Visual Studio 2019'ı açın, Dosya menüsü olan Yeni, Proje'yi seçin. Yeni Proje iletişim kutusunda:

    • Sol bölmedeki Yüklü, Visual C# altında Windows Masaüstü'nü seçin.

    • Orta bölmede Konsol Uygulaması (.NET Framework) seçeneğini belirleyin

    • Alt bölmede proje Adı, Konum ve içeren Çözüm adını uygun şekilde güncelleştirin.

    • bitirdiğinizde, sağ alttaki Tamam düğmesine tıklayın.

      Visual Studio solution creation

  2. MIP Dosya SDK'sı için Nuget paketini projenize ekleyin:

    • Çözüm Gezgini proje düğümüne sağ tıklayın (doğrudan üst/çözüm düğümü altında) ve NuGet paketlerini yönet...:'ı seçin:
    • NuGet Paket Yöneticisi sekmesi Düzenleyici Grubu sekmeleri alanında açıldığında:
      • Göz At'ı seçin.
      • Arama kutusuna "Microsoft.InformationProtection" yazın.
      • "Microsoft.InformationProtection.File" paketini seçin.
      • Önizleme değişiklikleri onay iletişim kutusu görüntülendiğinde "Yükle" seçeneğine ve ardından "Tamam"a tıklayın.
  3. MIP Dosya SDK'sı paketini eklemek için yukarıdaki adımları yineleyin, bunun yerine uygulamaya "Microsoft.Identity.Client" ekleyin.

Kimlik doğrulama temsilcisi uygulama

MIP SDK' sı, istemci uygulamasıyla kimlik doğrulama çalışmasını paylaşmak için bir mekanizma sağlayan sınıf genişletilebilirliğini kullanarak kimlik doğrulamasını uygular. İstemcinin uygun bir OAuth2 erişim belirteci alması ve çalışma zamanında MIP SDK'sına sağlaması gerekir.

Şimdi SDK Microsoft.InformationProtection.IAuthDelegate arabirimini genişleterek ve sanal işlevi geçersiz kılarak/uygulayarak IAuthDelegate.AcquireToken() kimlik doğrulama temsilcisi için bir uygulama oluşturun. Kimlik doğrulama temsilcisi örneği oluşturulur ve daha sonra ve FileEngine nesneleri tarafından FileProfile kullanılır.

  1. Visual Studio'da proje adına sağ tıklayın, Ekle'yi ve ardından Sınıf'ı seçin.

  2. Ad alanına "AuthDelegateImplementation" yazın. Ekle'ye tıklayın.

  3. Microsoft Authentication Library (MSAL) ve MIP kitaplığı için using deyimleri ekleyin:

    using Microsoft.InformationProtection;
    using Microsoft.Identity.Client;
    
  4. öğesinin özel değişkenini Microsoft.InformationProtection.ApplicationInfo ve aynı türü kabul eden bir oluşturucuyu devralacak Microsoft.InformationProtection.IAuthDelegate ve uygulayacak şekilde ayarlayınAuthDelegateImplementation.

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

    ApplicationInfo Nesnesi üç özellik içerir. sınıfında _appInfo.ApplicationId , kimlik doğrulama kitaplığına istemci kimliğini sağlamak için kullanılır AuthDelegateImplementation . ApplicationName ve ApplicationVersion Azure Information Protection Analytics raporlarında kullanıma sunulacaktır.

  5. public string AcquireToken() yöntemini ekleyin. Bu yöntem ve üç dizeyi kabul Microsoft.InformationProtection.Identity etmelidir: yetkili URL'si, kaynak URI'si ve gerekirse talepler. Bu dize değişkenleri API tarafından kimlik doğrulama kitaplığına geçirilir ve işlenmemelidir. Lütfen kiracınız için Azure portalından Kiracı GUID'sini girin. Kiracı GUID'i dışındaki dizelerin düzenlenmesi kimlik doğrulamasının başarısız olmasına neden olabilir.

    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;
    }
    
    

Şimdi SDK Microsoft.InformationProtection.IConsentDelegate arabirimini genişleterek ve geçersiz kılarak/uygulayarak GetUserConsent()onay temsilcisi için bir uygulama oluşturun. Onay temsilcisi örneği oluşturulur ve daha sonra Dosya profili ve Dosya altyapısı nesneleri tarafından kullanılır. Onay temsilcisi, kullanıcının parametresinde url kullanmayı onaylaması gereken hizmetin adresiyle birlikte sağlanır. Temsilci genellikle kullanıcının hizmete erişmeyi kabul etmesini veya reddetmesini sağlayan bir akış sağlamalıdır. Bu hızlı başlangıç sabit kodu Consent.Acceptiçin.

  1. Daha önce kullandığımız Visual Studio "Sınıf Ekle" özelliğini kullanarak projenize başka bir sınıf ekleyin. Bu kez, Sınıf Adı alanına "ConsentDelegateImplementation" yazın.

  2. Şimdi ConsentDelegateImpl.cs dosyasını güncelleştirerek yeni onay temsilcisi sınıfınızı uygulayın. için Microsoft.InformationProtection using deyimini ekleyin ve sınıfını devralacak IConsentDelegateşekilde ayarlayın.

    class ConsentDelegateImplementation : IConsentDelegate
    {
         public Consent GetUserConsent(string url)
         {
              return Consent.Accept;
         }
    }
    
  3. İsteğe bağlı olarak, hata olmadan derlendiğinden emin olmak için çözümü derlemeyi deneme.

MIP SDK Yönetilen Sarmalayıcısını başlatma

  1. Çözüm Gezgini, projenizde yönteminin uygulanmasını Main() içeren .cs dosyasını açın. Varsayılan olarak, proje oluşturma sırasında belirttiğiniz, onu içeren projeyle aynı ada sahiptir.

  2. oluşturulan uygulamasını main()kaldırın.

  3. Yönetilen sarmalayıcı başlatma, oluşturma, Microsoft.InformationProtection.MIP profil yükleme ve kaynakları serbest bırakma için kullanılan statik bir MipContextsınıf içerir. Dosya SDK'sı işlemleri için sarmalayıcıyı başlatmak için çağrısı MIP.Initialize()yapın ve dosya işlemleri için gerekli kitaplıkları yüklemek üzere öğesini geçirin MipComponent.File .

  4. Program.cs dosyasında aşağıdakini ekleyin ve application-id> değerini daha önce oluşturulan Microsoft Entra Uygulama Kaydı kimliğiyle değiştirin<.Main()

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);
            
        }
    }
}

Dosya Profili ve Altyapısı Oluşturma

Belirtildiği gibi, MIP API'lerini kullanan SDK istemcileri için profil ve altyapı nesneleri gereklidir. Yerel DLL'leri yükleyip profil ve altyapı nesnelerinin örneğini oluşturacak kod ekleyerek bu Hızlı Başlangıcın kodlama bölümünü tamamlayın.

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. Yapıştırdığınız kaynak kodundaki yer tutucu değerlerini aşağıdaki değerleri kullanarak değiştirin:

    Yer tutucu Değer Örnek
    <uygulama kimliği> "MIP SDK kurulumu ve yapılandırması" (2 örnek) içinde kayıtlı uygulamaya atanan Microsoft Entra Uygulama Kimliği. 0edbblll-8773-44de-b87c-b8c6276d41eb
    <kolay ad> Uygulamanız için kullanıcı tanımlı kolay ad. AppInitialization
    <Kiracı-GUID> Microsoft Entra kiracınızın Kiracı Kimliği TenantID
  2. Şimdi uygulamanın son derlemesini yapın ve hataları çözün. Kodunuz başarıyla derlenmelidir.

Sonraki Adımlar

Başlatma kodunuz tamamlandıktan sonra, MIP Dosya SDK'larını yaşamaya başlayacağınız sonraki hızlı başlangıç için hazırsınız.