Aracılığıyla paylaş


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

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

Uyarı

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 alarak sıra halinde yapılmalıdır; bu ise ilk Hızlı Başlangıçtır. 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.

Önkoşullar

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

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 çözümü oluşturma

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

    • Çözüm Gezgini'nde proje düğümüne (doğrudan üst/çözüm düğümü altında) sağ tıklayın ve NuGet paketlerini yönet... öğesini 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 uygulayın

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 FileProfile ve FileEngine nesneleri tarafından 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. Name alanına "AuthDelegateImplementation" yazın. Ekle'yi tıklatın.

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

    using Microsoft.InformationProtection;
    using Microsoft.Identity.Client;
    
  4. AuthDelegateImplementation, Microsoft.InformationProtection.IAuthDelegate öğesini devralacak ve Microsoft.InformationProtection.ApplicationInfo türünde özel bir değişken uygulayacak şekilde ayarlayın ve aynı türü kabul eden bir oluşturucu belirleyin.

    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. _appInfo.ApplicationId sınıfında, istemci kimliğini kimlik doğrulama kitaplığına sağlamak için AuthDelegateImplementation kullanılır. ApplicationName ve ApplicationVersion Microsoft Purview denetim raporlarında kullanıma sunulacaktır.

  5. public string AcquireToken() yöntemini ekleyin. Bu yöntem, gerekirse Microsoft.InformationProtection.Identity ve üç dizeyi kabul etmelidir: yetkili URL'si, kaynak URI'si ve hak talepleri. 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'nın Microsoft.InformationProtection.IConsentDelegate arabirimini genişleterek ve GetUserConsent() üzerinde geçersiz kılma/uygulama işlemleriyle onay vekili için bir uygulama gerçekleştirin. Onay yetkilisi nesnesi oluşturulur ve daha sonra Dosya profili ve Dosya motoru nesneleri tarafından kullanılır. Onay temsilcisine, kullanıcının kullanmayı onaylaması gereken hizmetin adresi url parametresiyle birlikte verilir. 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ıç için sabit kod Consent.Accept.

  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 yeni onay temsilcisi sınıfınızı uygulamak için ConsentDelegateImpl.cs güncelleştirin. için using deyimini ekleyin ve sınıfı Microsoft.InformationProtection miras alacak ş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ıyı Başlat

  1. Çözüm Gezgini'nden, projenizde yönteminin uygulanmasını Main() içeren .cs dosyasını açın. Proje oluşturma sırasında belirlediğiniz isim, varsayılan olarak projeyle aynı olup onu içeren yapıdadır.

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

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

  4. Program.cs Main() içinde application-id< değerini daha önce oluşturulan Microsoft Entra Uygulama Kaydı kimliğiyle değiştirerek> aşağıdakileri ekleyin.

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 Motor 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ı tarafından tanımlanan tanıdık bir isim. Uygulama Başlatma
    <Kiracı-GUID> Microsoft Entra kiracınız için Tenant-ID 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.