Microsoft Information Protection SDK — koncepcje obsługi plików


Ustawianie etykiety

Ustawianie etykiety jest procesem dwue partiowym. Po pierwsze, po utworzeniu programu obsługi, który wskazuje na plik, można ustawić etykietę, wywołując ją z pewnymi FileHandler->SetLabel() parametrami: mip::Label , i mip::LabelingOptionsmip::ProtectionOptions . Najpierw trzeba rozpoznać identyfikator etykiety jako etykietę, a następnie zdefiniować opcje etykiet.

Rozwiązywanie problemu z identyfikatorem etykiety: mip::Label

Pierwszy parametr funkcji EtykietaZ zestawu to . Często aplikacja pracuje z identyfikatorami etykiet, a nie etykietami. Identyfikator etykiety można rozpoznać do nas, wywołując pozycję mip::Labelmip::Label w pliku lub akącie zasad:

mip::Label label = mEngine->GetLabelById(labelId);

Opcje etykiet

Drugim parametrem wymaganym do ustawienia etykiety jest mip::LabelingOptions .

LabelingOptions określa dodatkowe informacje o etykiecie, takie jak AssignmentMethod i justowanie dla akcji.

  • mip::AssignmentMethod to po prostu wyliczenie, które ma trzy wartości: STANDARDPRIVILEGED , lub AUTO . Przejrzyj mip::AssignmentMethod odwołanie, aby uzyskać więcej szczegółowych informacji.
  • Justowanie jest wymagane tylko wtedy, gdy wymagane jest działanie zasad usługi oraz obniżenie poziomu wrażliwości pliku.

Ten wycinek przedstawia tworzenie obiektu mip::LabelingOptions i ustawianie obniżenia poziomu uzasadnienia i komunikatu.

auto labelingOptions = mip::LabelingOptions(mip::AssignmentMethod::STANDARD);
labelingOptions.SetDowngradeJustification(true, "Because I made an educated decision based upon the contents of this file.");

Ustawienia ochrony

Niektóre aplikacje mogą wymagać wykonywania operacji w imieniu tożsamości użytkownika delegowanego. Ta mip::ProtectionSettings klasa umożliwia aplikacji zdefiniowanie tożsamości delegowanego dla każdego programu mip::ProtectionSettings. Wcześniej delegowanie było wykonywane przez klasy aparatu. Miało to istotne wady związane z obciążeniem aplikacji i odjęciem usług. Przeniesienie delegowanych ustawień użytkownika do klasy obsługi i ustawienie ich w tej klasie obsługi eliminuje to obciążenie, co skutkować lepszą wydajnością aplikacji wykonujących wiele operacji w imieniu różnych zestawów tożsamości mip::ProtectionSettings użytkowników.

Jeśli delegowanie nie jest wymagane, po prostu przekaż mip::ProtectionSettings() do mip::ProtectionSettings() Jeśli jest wymagane delegowanie, można to osiągnąć, tworząc mip::ProtectionSettings obiekt i ustawiając delegowany adres e-mail:

mip::ProtectionSettings protectionSettings; 
protectionSettings.SetDelegatedUserEmail("alice@contoso.com");

Ustawianie etykiety

Po pobraniu etykiety z identyfikatora, skonfigurowaniu opcji etykiety i (opcjonalnie) skonfigurowaniu ustawień ochrony można mip::Label teraz ustawić etykietę.

Jeśli nie ustawiono ustawień ochrony, ustaw etykietę, dzwoniąc SetLabel do programu obsługi:

handler->SetLabel(label, labelingOptions, mip::ProtectionSettings());

Jeśli do wykonania operacji delegowanej wymagane było ustawienia ochrony, wykonaj te czynności:

handler->SetLabel(label, labelingOptions, protectionSettings);

Ustawienie etykiety w pliku, do których odwołuje się program obsługi, to jeszcze jeden krok w celu zatwierdzenia zmiany i napisania pliku na dysku lub utworzenia strumienia wyjściowego.

Zatwierdzanie zmian

Ostatnim krokiem w celu zatwierdzenia zmiany pliku w zestawie MIP SDK jest zatwierdzenie tej zmiany. Można to osiągnąć za pomocą FileHandler->CommitAsync() tej funkcji.

Aby wdrożyć funkcję zobowiązania, wracamy do obietnicy/przyszłości, tworząc obietnicę dla bool . Funkcja zwróci wartość prawda, jeśli operacja zakończyła się powodzeniem lub fałsz, jeśli z jakiegokolwiek CommitAsync() powodu operacja nie powiodła się.

Po utworzeniu i , jest wywoływane i dostępne są dwa parametry: Ścieżka pliku wyjściowego promisefuture ( ) i CommitAsync()std::string obietnica. Wreszcie, wynik jest uzyskiwany przez uzyskanie wartości future obiektu.

auto commitPromise = std::make_shared<std::promise<bool>>();
auto commitFuture = commitPromise->get_future();
handler->CommitAsync(outputFile, commitPromise);
auto wasCommitted = commitFuture.get();

Ważne: Nie spowoduje to zaktualizowania ani zastąpienia istniejących plików. To deweloper może zaimplementować zastąpienie oznaczonego pliku.

Jeśli chcesz napisać etykietę FileA.docx pliku, FileB.docx, zostanie utworzona z dodaniem etykiety. Kod należy zapisywać w celu usunięcia lub zmiany FileA.docx i zmiany FileB.docx.


Usuwanie etykiety

auto handler = mEngine->CreateFileHandler(filePath, std::make_shared<FileHandlerObserverImpl>());
handler->DeleteLabel(mip::AssignmentMethod::PRIVILEGED, "Label unnecessary.");
auto commitPromise = std::make_shared<std::promise<bool>>();
auto commitFuture = commitPromise->get_future();
handler->CommitAsync(outputFile, commitPromise);

Zestaw SDK pliku programu MIP udostępnia wszystkie operacje, za pomocą których można odczytywać i zapisywać etykiety, czyli ochronę, w zestawie typów plików, dla których jest wbudowana mip::FileHandler obsługa.

Obsługiwane typy plików

  • Office formaty plików oparte na OCP (Office 2010 i nowsze)
  • Starsze Office plików (Office 2007)
  • PDF
  • Ogólna obsługa plików PFILE
  • Pliki, które obsługują adobe XMP

Funkcje obsługi plików

mip::FileHandler udostępnia metody odczytywania, pisania i usuwania etykiet i informacji dotyczących ochrony. Aby zapoznać się z pełną listą, zapoznaj się z dokumentacja interfejsu API.

W tym artykule zostaną uwzględnione następujące metody:

  • GetLabelAsync()
  • SetLabel()
  • DeleteLabel()
  • CommitAsync()

Wymagania

Do utworzenia FileHandler pliku do pracy z określonym plikiem są wymagane:

  • A FileProfile
  • A FileEngine added to the FileProfile
  • Klasa dziedzicząca mip::FileHandler::Observer

Tworzenie programu obsługi plików

Pierwszym krokiem wymaganym do zarządzania dowolnymi plikami w zestawie File SDK jest utworzenie FileHandler obiektu. Ta klasa implementuje wszystkie funkcje wymagane do uzyskania, ustawienia, aktualizowania, usuwania i zatwierdzania zmian etykiet do plików.

Utworzenie tego FileHandler jest tak proste, jak nazwanie FileEngine funkcji przy użyciu wzorca CreateFileHandlerAsync obietnicy/przyszłości.

CreateFileHandlerAsync akceptuje trzy parametry: ścieżka do pliku, który ma być odczytywany lub modyfikowany, asynchroniczne powiadomienia o zdarzeniach i obietnica mip::FileHandler::Observer dla FileHandler .

Uwaga: Zajęcia muszą być zaimplementowane w klasie pochodnych, zgodnie z CreateFileHandler wymaganiem Observer obiektu.

auto createFileHandlerPromise = std::make_shared<std::promise<std::shared_ptr<mip::FileHandler>>>();
auto createFileHandlerFuture = createFileHandlerPromise->get_future();
fileEngine->CreateFileHandlerAsync(filePath, std::make_shared<FileHandlerObserver>(), createFileHandlerPromise);
auto handler = createFileHandlerFuture.get();

Po pomyślnym utworzeniu obiektu można wykonywać operacje na FileHandler plikach (get/set/delete/commit).

Odczytywanie etykiety

Wymagania dotyczące metadanych

Istnieje kilka wymagań, które należy spełnić, aby pomyślnie odczytać metadane z pliku i przetłumaczyć dane, które mogą być używane w aplikacjach.

  • Odczytywana etykieta musi nadal istnieć w Microsoft 365 usługi. Jeśli zestaw SDK zostanie całkowicie usunięty, nie będzie można uzyskać informacji o tej etykiecie i zwróci błąd.
  • Metadane pliku muszą pozostać nienaruszone. Te metadane obejmują:
    • Atrybut1
    • Atrybut2

GetLabelAsync()

Po utworzeniu programu obsługi w celu wskazania określonego pliku wracamy do wzorca obietnicy/przyszłości w celu asynchronicznego odczytywania etykiety. Obietnica dotyczy obiektu zawierającego wszystkie informacje mip::ContentLabel na temat zastosowanej etykiety.

Po instantiating promise the and future objects, we read the label by calling handler->GetLabelAsync() and providing the as the promise lone parameter. Na koniec etykieta może być przechowywana w mip::ContentLabel obiekcie, który zostanie z . future

auto loadPromise = std::make_shared<std::promise<std::shared_ptr<mip::ContentLabel>>>();
auto loadFuture = loadPromise->get_future();
handler->GetLabelAsync(loadPromise);
auto label = loadFuture.get();

Dane etykiet mogą być odczytywane z obiektu i przekazywane do dowolnego innego składnika lub funkcji label w aplikacji.