Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Element mip::FileEngine w zestawie SDK plików MIP udostępnia interfejs do wszystkich operacji wykonywanych w imieniu określonej tożsamości. Dodaj jeden mechanizm dla każdego użytkownika, który loguje się do aplikacji. Silnik wykonuje wszystkie operacje w kontekście tej tożsamości.
Ma FileEngine dwie podstawowe obowiązki: wyświetlanie listy etykiet dla uwierzytelnionego użytkownika i tworzenie procedur obsługi plików w celu wykonywania operacji na plikach w imieniu użytkownika.
mip::FileEngine-
ListSensitivityLabels(): Pobiera listę etykiet dla załadowanego aparatu. -
CreateFileHandler(): tworzymip::FileHandlerelement dla określonego pliku lub strumienia.
Dodaj mechanizm plików
Jak opisano w temacie Profile i obiekty aparatu, aparat może mieć dwa stany — CREATED lub LOADED. Jeśli nie jest to jeden z tych dwóch stanów, nie istnieje. Aby utworzyć i załadować stan, wykonaj jedno wywołanie metody FileProfile::LoadAsync. Jeśli silnik już istnieje w pamięci podręcznej, to LOADED. Jeśli to nie istnieje, to CREATED i LOADED.
CREATED oznacza, że aplikacja ma wszystkie informacje od usługi potrzebne do załadowania silnika.
LOADED oznacza, że wszystkie struktury danych niezbędne do korzystania z silnika znajdują się w pamięci.
Utwórz ustawienia mechanizmu plików
Podobnie jak w przypadku profilu, silnik wymaga również obiektu ustawień, mip::FileEngine::Settings. Ten obiekt przechowuje unikatowy identyfikator aparatu, implementację mip::AuthDelegate , dostosowywalne dane klienta do debugowania lub telemetrii oraz opcjonalnie ustawienia regionalne.
W tym miejscu utworzymy FileEngine::Settings obiekt o nazwie engineSettings przy użyciu tożsamości użytkownika aplikacji.
FileEngine::Settings engineSettings(
mip::Identity(mUsername), // mip::Identity.
authDelegateImpl, // auth delegate object
"", // Client data. Customizable by developer, stored with engine.
"en-US", // Locale.
false); // Load sensitive information types for driving classification.
Podczas tworzenia elementu `engineSettings` w ten sposób należy również jawnie ustawić unikatowy parametr `engineId`:
engineSettings.SetEngineId(engineId);
Użycie nazwy użytkownika lub adresu e-mail pomaga zapewnić, że ten sam silnik jest wczytywany za każdym razem, gdy użytkownik korzysta z usługi lub aplikacji.
Ponadto prawidłowe jest podanie niestandardowego identyfikatora aparatu:
FileEngine::Settings engineSettings(
"myEngineId", // string
authDelegateImpl, // auth delegate object
"", // Client data in string format. Customizable by developer, stored with engine.
"en-US", // Locale. Default is en-US
false); // Load sensitive information types for driving classification. Default is false.
Najlepszą praktyką jest użycie jako pierwszego parametru id, który łączy silnik z powiązanym użytkownikiem. Adres e-mail, UPN lub identyfikator GUID obiektu Microsoft Entra pomagają zapewnić, że identyfikator jest unikatowy i może zostać wczytany ze stanu lokalnego bez wywoływania usługi.
Dodaj silnik plików
Aby dodać silnik, wróć do wzorca promise/future zastosowanego do wczytania profilu. Zamiast tworzyć obietnicę dla mip::FileProfile, utwórz ją za pomocą mip::FileEngine.
//auto profile will be std::shared_ptr<mip::FileProfile>
auto profile = profileFuture.get();
// Instantiate the AuthDelegate implementation.
auto authDelegateImpl = std::make_shared<sample::auth::AuthDelegateImpl>(appInfo, userName, password);
//Create the FileEngine::Settings object
FileEngine::Settings engineSettings("UniqueID", authDelegateImpl, "");
//Create a promise for std::shared_ptr<mip::FileEngine>
auto enginePromise = std::make_shared<std::promise<std::shared_ptr<mip::FileEngine>>>();
//Instantiate the future from the promise
auto engineFuture = enginePromise->get_future();
//Add the engine using AddEngineAsync, passing in the engine settings and the promise
profile->AddEngineAsync(engineSettings, enginePromise);
//get the future value and store in std::shared_ptr<mip::FileEngine>
auto engine = engineFuture.get();
Kod dodaje silnik dla uwierzytelnionego użytkownika do profilu.
Lista etykiet poufności
Za pomocą dodanego silnika można wyświetlić listę wszystkich etykiet poufności dostępnych dla uwierzytelnionego użytkownika, wywołując engine->ListSensitivityLabels().
ListSensitivityLabels() Pobiera listę etykiet i atrybutów tych etykiet dla określonego użytkownika z usługi. Wynik jest przechowywany w wektorze std::shared_ptr<mip::Label>.
Aby uzyskać więcej informacji, zobacz mip::Labeldokumentację klasy.
ListaEtykietWrażliwości()
std::vector<shared_ptr<mip::Label>> labels = engine->ListSensitivityLabels();
Lub, uproszczone:
auto labels = engine->ListSensitivityLabels();
Drukowanie etykiet i identyfikatorów
Drukowanie nazw pokazuje, że aplikacja pomyślnie ściągnęła zasady z usługi i uzyskała etykiety. Aby zastosować etykietę, potrzebny jest identyfikator etykiety. Poniższy kod iteruje po wszystkich etykietach i wyświetla name oraz id dla każdej etykiety nadrzędnej oraz podrzędnej.
//Iterate through all labels in the vector
for (const auto& label : labels) {
//Print label name and GUID
cout << label->GetName() << " : " << label->GetId() << endl;
//Print child label name and GUID
for (const auto& child : label->GetChildren()) {
cout << "-> " << child->GetName() << " : " << child->GetId() << endl;
}
}
Możesz użyć kolekcji mip::Label zwróconej przez GetSensitivityLabels(), aby wyświetlić wszystkie etykiety dostępne dla użytkownika, a następnie po wybraniu etykiety użyć identyfikatora do przypisania etykiet do pliku.
Następne kroki
Teraz, gdy profil jest załadowany, silnik został dodany, a etykiety są dostępne, możesz dodać obsługę, aby rozpocząć odczytywanie, zapisywanie lub usuwanie etykiet z plików. Aby uzyskać więcej informacji, zobacz Programy obsługi plików w zestawie MIP SDK.