Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
mip::PolicyEngine implementiert alle Vorgänge, die das Richtlinien-SDK ausführen kann, mit Ausnahme des Ladens des Profils.
Implementierung: Hinzufügen eines Richtlinienmoduls
Implementierung: Richtlinien-Engine-Einstellungen erstellen
Ähnlich wie bei einem Profil erfordert die Engine auch ein Einstellungsobjekt, mip::PolicyEngine::Settings. Dieses Objekt speichert die eindeutige Engine-ID, ein Objekt Ihrer mip::AuthDelegate-Implementierung, anpassbare Clientdaten für Debugging oder Telemetrie und optional die Locale.
Im folgenden Beispiel wird ein PolicyEngine::Settings Objekt namens engineSettings mithilfe der Identität des Anwendungsbenutzers erstellt:
PolicyEngine::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.
Wenn Sie engineSettings auf diese Weise erstellen, legen Sie auch explizit eine eindeutige engineId fest:
engineSettings.SetEngineId(engineId);
Durch die Verwendung des Benutzernamens oder der E-Mail wird sichergestellt, dass dasselbe Modul jedes Mal geladen wird, wenn der Benutzer den Dienst oder die Anwendung verwendet.
Auch gültig ist die Bereitstellung einer benutzerdefinierten Modul-ID:
PolicyEngine::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.
Verwenden Sie als bewährte Vorgehensweise als ersten Parameter id, der die Engine mit dem zugehörigen Benutzer verbindet, vorzugsweise den User Principal Name (UPN).
Implementierung: Hinzufügen des Richtlinienmoduls
Um die Engine hinzuzufügen, greifen Sie wieder auf das Future/Promise-Muster zurück, das zum Laden des Profils verwendet wurde. Anstatt die Zusage für mip::Profile zu erstellen, verwenden Sie mip::PolicyEngine.
// Auto profile will be std::shared_ptr<mip::Profile>.
auto profile = profileFuture.get();
// Create the delegate
auto authDelegateImpl = std::make_shared<sample::auth::AuthDelegateImpl>(appInfo, userName, password);
// Create the PolicyEngine::Settings object.
PolicyEngine::Settings engineSettings("UniqueID", authDelegateImpl, "");
// Create a promise for std::shared_ptr<mip::PolicyEngine>.
auto enginePromise = std::make_shared<std::promise<std::shared_ptr<mip::PolicyEngine>>>();
// 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::PolicyEngine>.
auto engine = engineFuture.get();
Der Code fügt dem Profil ein Modul für den authentifizierten Benutzer hinzu.
Implementierung: Vertraulichkeitsbezeichnungen auflisten
Mithilfe des hinzugefügten Moduls können Sie alle Vertraulichkeitsbezeichnungen auflisten, die dem authentifizierten Benutzer durch Aufrufen engine->ListSensitivityLabels()zur Verfügung stehen.
ListSensitivityLabels() Ruft die Liste der Bezeichnungen und Attribute dieser Bezeichnungen für einen bestimmten Benutzer aus dem Dienst ab. Das Ergebnis wird in einem Vektor von std::shared_ptr<mip::Label> gespeichert.
Implementierung: ListSensitivityLabels()
std::vector<shared_ptr<mip::Label>> labels = engine->ListSensitivityLabels();
Implementierung: Drucken der Etiketten
//Iterate through all labels in the vector
for (const auto& label : labels) {
//print the label name
cout << label->GetName() << endl;
//Iterate through all child labels
for (const auto& child : label->GetChildren()) {
//Print the label with some formatting
cout << "-> " << child->GetName() << endl;
}
}
Das Drucken der Namen zeigt, dass die Anwendung die Richtlinie erfolgreich aus dem Dienst abgerufen und die Bezeichnungen erhalten hat. Um das Label anzuwenden, benötigen Sie die Labelkennung. Ändern Sie den vorherigen Codeausschnitt, um die Bezeichnungs-ID zurückzugeben:
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;
}
}
Sie können die von ListSensitivityLabels() zurückgegebene Sammlung von mip::Label verwenden, um alle dem Benutzer zur Verfügung stehenden Bezeichnungen anzuzeigen und dann nach der Auswahl die ID zu verwenden, um Bezeichnungen auf eine Datei anzuwenden.