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

Bu hızlı başlangıçta, MIP SDK .NET sarmalayıcının çalışma zamanında kullandığı istemci başlatma desenini nasıl uygulayabileceğiniz gösterilmektedir.

Uyarı

MIP .NET sarmalayıcının Dosya, İlke veya Koruma SDK'larını kullanan tüm istemci uygulamaları bu hızlı başlangıçta özetlenen adımları gerektirir. Bu hızlı başlangıçta Dosya SDK'larının kullanımı gösterse de, bu desen İlke ve Koruma SDK'larını kullanan istemciler için de geçerlidir. Gelecekteki hızlı başlangıçları seri olarak tamamlayın, çünkü her biri bir öncekini temel alır ve bu ilk 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.

Ö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 üzerine inşa edildiği ilk Visual Studio çözümünü ve projesini oluşturup yapılandırın.

  1. Visual Studio 2022 veya sonraki bir sürümünü açın, Dosya menüsünü ( Yeni, Proje) 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 8 veya üzerini hedefleme) öğesini seçin.

    • 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ı, kimlik doğrulama işini istemci uygulamasıyla 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 veya uygulayarak IAuthDelegate.AcquireToken() kimlik doğrulama temsilcisi için bir uygulama oluşturun. FileProfile ve FileEngine nesneleri daha sonra kimlik doğrulama temsilcisini oluşturur ve kullanı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. AuthDelegateImplementation sınıfı, istemci kimliğini kimlik doğrulama kitaplığına iletmek için _appInfo.ApplicationId kullanır. ApplicationNameve ApplicationVersion Microsoft Purview denetim raporlarında görünü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 API, bu dize değişkenlerini kimlik doğrulama kitaplığına aktarır ve bunları değiştirmemelisiniz. Kiracınıza ait Azure portalındaki 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şletip GetUserConsent() öğesini geçersiz kılarak veya uygulayarak bir onay temsilcisi için uygulama oluşturun. Dosya profili ve Dosya altyapısı nesneleri örneği oluşturur ve daha sonra onay temsilcisini kullanır. Onay temsilcisi, kullanıcının parametresinde url kullanmayı onaylaması gereken hizmetin adresini alır. Temsilci genellikle kullanıcının hizmete erişim iznini kabul veya reddetmesine olanak tanıyan bir akış sağlamalıdır. Bu hızlı başlangıç için sabit kod yazın 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 gerekir. Yerel DLL'leri yüklemek ve ardından 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. 00001111-aaaa-2222-bbbb-3333cccc4444
    <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 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ı deneyimlediğiniz sonraki hızlı başlangıç için hazırsınız.