Uwaga
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.
Zestaw mip::FileEngine
SDK pliku MIP udostępnia interfejs dla wszystkich operacji wykonywanych w imieniu określonej tożsamości. Jeden silnik zostanie dodany dla każdego użytkownika, który loguje się do aplikacji, a wszystkie operacje wykonywane przez ten silnik zostaną wykonane w kontekście tej tożsamości.
Ma FileEngine
dwa główne zadania: Wyświetlanie etykiet dla uwierzytelnionego użytkownika oraz tworzenie mechanizmów do obsługi plików, aby wykonywać operacje na plikach w imieniu użytkownika.
mip::FileEngine
-
ListSensitivityLabels()
: Pobiera listę etykiet dla załadowanego aparatu. -
CreateFileHandler()
: tworzymip::FileHandler
element dla określonego pliku lub strumienia.
Dodaj moduł plików
Zgodnie z opisem w obiektach Profile i Engine, silnik 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, wystarczy wykonać jedno wywołanie metody FileProfile::LoadAsync
. Jeśli silnik już istnieje w stanie buforowanym, będzie to LOADED
. Jeśli nie istnieje, będzie CREATED
i LOADED
.
CREATED
oznacza, że aplikacja ma wszystkie informacje z usługi, które są potrzebne do załadowania silnika.
LOADED
oznacza, że każda niezbędna struktura danych do wykorzystania silnika została utworzona w pamięci.
Tworzenie ustawień silnika 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, które mogą być używane do debugowania lub telemetrii, a także 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 ustawień silnika w ten sposób ważne jest również, aby jawnie ustawić unikatowy identyfikator silnika za pomocą:
engineSettings.SetEngineId(engineId);
Użycie nazwy użytkownika lub adresu e-mail pomaga upewnić się, że ten sam mechanizm jest ładowany 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.
Jako najlepszą praktykę, pierwszy parametr id
powinien być czymś, co umożliwia łatwe połączenie silnika ze skojarzonym użytkownikiem. Coś takiego jak adres e-mail, nazwa UPN lub identyfikator GUID obiektu usługi AAD zapewni, że identyfikator jest zarówno unikatowy, jak i można go załadować ze stanu lokalnego bez wywoływania usługi.
Dodaj silnik plików
Aby dodać silnik, wrócimy do wzorca obietnicy/przyszłego użytego do załadowania profilu. Zamiast tworzyć obietnicę za pomocą mip::FileProfile
, jest ona tworzona przy użyciu 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();
Wynikiem końcowym powyższego kodu jest dodanie aparatu dla uwierzytelnionego użytkownika do profilu.
Lista etykiet poufności
Za pomocą dodanego aparatu można teraz wyświetlić listę wszystkich etykiet poufności dostępnych dla uwierzytelnionego użytkownika, wywołując metodę 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>
.
Przeczytaj więcej tutaj na temat .mip::Label
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 jest łatwym sposobem pokazania, że pomyślnie pobraliśmy politykę z usługi i uzyskaliśmy etykiety. Aby zastosować etykietę, wymagany jest identyfikator etykiety. Poniższy kod iteruje wszystkie etykiety, wyświetlając name
i id
dla każdej etykiety nadrzędnej i 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;
}
}
Kolekcja mip::Label
zwrócona przez GetSensitivityLabels()
może być użyta do wyświetlania wszystkich etykiet dostępnych dla użytkownika, a następnie, po ich wybraniu, można użyć identyfikatora do zastosowania etykiet na pliku.
Następne kroki
Teraz, gdy profil zostanie załadowany, aparat dodany i mamy etykiety, możemy dodać procedurę obsługi, aby rozpocząć odczytywanie, zapisywanie lub usuwanie etykiet z plików. Zobacz Programy obsługi plików w zestawie MIP SDK.