Szybki start: inicjowanie aplikacji klienckiej (C#)
Ten przewodnik Szybki start pokaże, jak wdrożyć wzorzec inicjowania klienta używany przez zawijacz .NET zestawu SDK MIP w środowisku uruchomieniowym.
Uwaga
Kroki opisane w tym przewodniku Szybki start są wymagane dla każdej aplikacji klienckiej, która korzysta z pliku file /net wrapper mip lub zestawów SDK zasad. Zestaw SDK ochrony nie jest jeszcze dostępny. Ten szybki start pokazuje użycie zestawów SDK plików, jednak ten sam wzorzec obowiązuje dla klientów korzystających z zestawów SDK zasad i ochrony. Funkcja Przyszłe szybkie starty powinna być wykonywana szeregowo, ponieważ każda z nich jest kompilowana na poprzednim, przy tym tym pierwszym.
Wymagania wstępne
Jeśli jeszcze tego nie zrobić, pamiętaj, aby:
- Wykonaj czynności opisane w te Microsoft Information Protection (MIP) SDK konfiguracji. Ten przewodnik Szybki start "Inicjowanie aplikacji klienckich" korzysta z odpowiedniej konfiguracji i konfiguracji zestawu SDK.
- Opcjonalnie:
- Przejrzyj obiekty profilów i aparatów. Obiekty profilu i aparatu to uniwersalne koncepcje wymagane przez klientów, którzy korzystają z zestawów SDK plików/zasad/ochrony miP.
- Zapoznaj się z pojęciami uwierzytelniania, aby dowiedzieć się, jak uwierzytelnianie i zgoda są zaimplementowane przez zestaw SDK i aplikację kliencną.
Tworzenie Visual Studio i projektu
Najpierw tworzymy i konfigurujemy początkowe Visual Studio rozwiązania i projektu, na którym będą konstruowane inne szybkie starty.
Otwórz Visual Studio 2019, wybierz menu Plik,Nowy,Project. W oknie Project dialogowym Nowy:
W okienku po lewej stronie w obszarze Zainstalowano, Visual C#wybierz pozycję Windows pulpit.
W środkowym okienku wybierz pozycję Aplikacja konsoli (.NET Framework)
W dolnym okienku zaktualizuj odpowiednio nazwę projektu,lokalizację i odpowiednio zawierającą nazwę rozwiązania.
Po zakończeniu kliknij przycisk OK w prawym dolnym rogu.
Dodaj pakiet Nuget do zestawu SDK pliku MIP do projektu:
- W Eksploratorze rozwiązańkliknij prawym przyciskiem myszy węzeł projektu (bezpośrednio pod węzłem górnego/węzła rozwiązania) i wybierz pozycję Zarządzaj pakietami NuGet projektu...:
- Gdy karta NuGet Menedżer pakietów zostanie otwarta w obszarze kart Grupy edytorów:
- Wybierz pozycję Przeglądaj.
- W polu wyszukiwania wprowadź "Microsoft.InformationProtection".
- Wybierz pakiet "Microsoft.InformationProtection.File".
- Kliknij przycisk "Zainstaluj", a następnie kliknij przycisk "OK", gdy zostanie wyświetlone okno dialogowe potwierdzenia zmian w podglądzie.
Powtórz powyższe czynności w celu dodania pakietu ZESTAWU SDK pliku MIP, ale zamiast tego dodaj do aplikacji plik "Microsoft.Identity.Client".
Implementowanie pełnomocnika uwierzytelniania
Zestaw SDK protokołu MIP implementuje uwierzytelnianie za pomocą rozszerzalności klasy, który udostępnia mechanizm udostępniania uwierzytelniania podczas pracy z aplikacją kliencową. Klient musi uzyskać odpowiedni token dostępu OAuth2 i podać zestaw SDK MIP w czasie wykonywania.
Teraz utwórz implementację pełnomocnika uwierzytelniania, rozszerzając interfejs zestawu SDK Microsoft.InformationProtection.IAuthDelegate i zastępując/implementując funkcję IAuthDelegate.AcquireToken() wirtualną. Pełnomocnik uwierzytelniania zostanie wystąpienia i będzie później używany przez FileProfile obiekty FileEngine i.
Kliknij prawym przyciskiem myszy nazwę projektu w programie Visual Studio, wybierz pozycję Dodaj, a następnie pozycję Klasa.
Wprowadź "AuthDelegateImplementation" w polu Name (Nazwa). Kliknij przycisk Dodaj.
Dodaj instrukcje użycia dla biblioteki Microsoft Authentication Library (ADAL) i biblioteki MIP:
using Microsoft.InformationProtection; using Microsoft.Identity.Client;Set
AuthDelegateImplementationto inherit and implement a private variable of and aMicrosoft.InformationProtection.IAuthDelegateMicrosoft.InformationProtection.ApplicationInfoconstructor that accepts the same type.public class AuthDelegateImplementation : IAuthDelegate { private ApplicationInfo _appInfo; // Microsoft Authentication Library IPublicClientApplication private IPublicClientApplication _app; public AuthDelegateImplementation(ApplicationInfo appInfo) { _appInfo = appInfo; } }Obiekt
ApplicationInfoma trzy właściwości. Będzie on używany w klasie do zapewnienia identyfikatora_appInfo.ApplicationIdAuthDelegateImplementationklienta do biblioteki uwierzytelniania.ApplicationNameiApplicationVersionbędą one nasuwniane w raportach usługi Azure Information Protection Analytics.Dodaj
public string AcquireToken()metodę. Ta metoda powinna byćMicrosoft.InformationProtection.Identityakceptowana i zawierała trzy ciągi: adres URL urzędu, URI zasobu i oświadczenia, jeśli są wymagane. Te zmienne ciągu zostaną przekazane przez interfejs API do biblioteki uwierzytelniania i nie powinny być modyfikowane. Wprowadź identyfikator GUID dzierżawy z portalu Azure Portal dla swojej dzierżawy. Edytowanie ciągów innych niż identyfikator GUID dzierżawy może spowodować niepowodzenie uwierzytelniania.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; }
Implementowanie pełnomocnika zgody
Teraz utwórz implementację pełnomocnika zgody, rozszerzając interfejs zestawu SDK Microsoft.InformationProtection.IConsentDelegate i zastępując/implementując. GetUserConsent() Pełnomocnik zgody jest wystąpienia i używany później przez obiekty Profil pliku i Aparat plików. Pełnomocnik zgody jest podany wraz z adresem usługi, na używanie jej przez użytkownika w url parametrze. Pełnomocnik powinien ogólnie udostępnić przepływ, który umożliwia użytkownikowi zaakceptowanie lub odrzucenie zgody na dostęp do usługi. Aby szybko rozpocząć pracę z kodem Consent.Accept .
Używając tej samej Visual Studio "Dodaj zajęcia" użytej wcześniej, dodaj kolejne zajęcia do projektu. Tym razem wprowadź "ConsentDelegateImplementation" w polu Nazwa zajęć.
Teraz zaktualizuj consentDelegateImpl.cs, aby zaimplementować nową klasę pełnomocnika zgody. Dodaj instrukcje using dla
Microsoft.InformationProtectioni ustaw klasę dziedziczącąIConsentDelegate.class ConsentDelegateImplementation : IConsentDelegate { public Consent GetUserConsent(string url) { return Consent.Accept; } }Opcjonalnie spróbuj utworzyć rozwiązanie, aby zapewnić, że będzie ono kompilowane bez błędów.
Inicjowanie zarządzanego opakowania zestawu SDK MIP
W Eksploratorze rozwiązańotwórz plik cs w projekcie, który zawiera implementację metody. Domyślna nazwa jest taka sama jak nazwa projektu zawierającego projekt, która jest określona podczas tworzenia projektu.
Usuń wygenerowaną implementację
main()programu .Zarządzane zawijanie zawiera klasy statyczne, używane do inicjowania, tworzenia , ładowania profilów
Microsoft.InformationProtection.MIPMipContexti zwalniania zasobów. Aby zainicjować zawijanie dla operacji zestawu File SDK, wywołaj pozycję , przechodząc do w celu załadowania bibliotekMIP.Initialize()MipComponent.Fileniezbędnych do operacji na plikach.W
Main()Main()dodaj > następujące dane, zastępując identyfikator aplikacji identyfikatorem utworzonej wcześniej rejestracji aplikacji usługi Azure AD.
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);
}
}
}
Konstruowanie profilu pliku i aparatu
Jak wspomniano, obiekty profilu i aparatu są wymagane dla klientów zestawu SDK korzystających z interfejsów API miP. Ukończ kodowanie tej funkcji Szybki start, dodając kod w celu załadowania natywnych bibliotek DLL, a następnie wystąpienia obiektów profilu i aparatu.
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 Azure AD 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;
}
}
}
Zamień wartości zastępcze w wklejonym kodzie źródłowym na następujące wartości:
Symbol zastępczy Wartość Przykład <application-id> Identyfikator aplikacji usługi Azure AD przypisany do aplikacji zarejestrowanej w "konfiguracji i konfiguracji zestawu SDK MIP" (2 wystąpienia). 0edbblll-8773-44de-b87c-b8c6276d41eb <przyjazna nazwa> Zdefiniowana przez użytkownika przyjazna nazwa aplikacji. AppInitialization <Identyfikator GUID dzierżawy> Identyfikator dzierżawy dzierżawy usługi Azure AD TenantID Teraz wykonaj ostateczną kompilację aplikacji i rozwiąż wszelkie błędy. Kod powinien zostać pomyślnie skompilowany.
Następne kroki
Teraz, gdy kod inicjowania został ukończony, możesz rozpocząć kolejny szybki start, w którym będą dostępne zestawy SDK plików MIP.
