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.
Visual Studio 2019'ı açın, Dosya menüsü olan Yeni, Proje'yi seçin. Yeni Proje iletişim kutusunda:
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.
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.
Visual Studio'da proje adına sağ tıklayın, Ekle'yi ve ardından Sınıf'ı seçin.
Ad alanına "AuthDelegateImplementation" yazın. Ekle'ye tıklayın.
Microsoft Authentication Library (MSAL) ve MIP kitaplığı için using deyimleri ekleyin:
using Microsoft.InformationProtection; using Microsoft.Identity.Client;
öğesinin özel değişkenini
Microsoft.InformationProtection.ApplicationInfo
ve aynı türü kabul eden bir oluşturucuyu devralacakMicrosoft.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ırAuthDelegateImplementation
.ApplicationName
veApplicationVersion
Azure Information Protection Analytics raporlarında kullanıma sunulacaktır.public string AcquireToken()
yöntemini ekleyin. Bu yöntem ve üç dizeyi kabulMicrosoft.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; }
Onay temsilcisi uygulama
Ş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.Accept
için.
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.
Ş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ı devralacakIConsentDelegate
şekilde ayarlayın.class ConsentDelegateImplementation : IConsentDelegate { public Consent GetUserConsent(string url) { return Consent.Accept; } }
İ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
Çö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.oluşturulan uygulamasını
main()
kaldırın.Yönetilen sarmalayıcı başlatma, oluşturma,
Microsoft.InformationProtection.MIP
profil yükleme ve kaynakları serbest bırakma için kullanılan statik birMipContext
sı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çirinMipComponent.File
.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;
}
}
}
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 Ş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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin