Microsoft Information Protection SDK - Einwilligung
Die Enumerationsklasse mip::Consent
implementiert einen einfach zu verwendenden Ansatz, mit dem Anwendungsentwickler basierend auf dem Endpunkt, auf den vom SDK zugegriffen wird, eine benutzerdefinierte Zustimmungserfahrung bereitstellen kann. Die Benachrichtigung kann einen Benutzer über die Daten informieren, die gesammelt werden, wie die Daten entfernt werden, oder andere Informationen, die gesetzlich oder Compliancerichtlinien erforderlich sind. Sobald der Benutzer seine Zustimmung erteilt hat, kann die Anwendung fortgesetzt werden. Dieser Delegat wird nur aufgerufen, wenn versucht wird, auf Active Directory Rights Management Services (AD RMS) zuzugreifen. Er wird nicht aufgerufen, wenn er auf Clouddienste zugreift. Wenn Ihre Anwendung AD RMS nicht unterstützt, können Sie einen Delegaten implementieren, der immer Consent.AcceptAlways
zurückgeben wird.
Implementierung
Die Zustimmung wird implementiert, indem die mip::Consent
-Basisklasse erweitert und GetUserConsent
implementiert wird, um einen der mip::Consent
-Enumerationswerte zurückzugeben.
Das von mip::Consent
abgeleitete Objekt wird an den mip::FileProfile::Settings
- oder mip::ProtectionProfile::Settings
-Konstruktor übergeben.
Wenn ein Benutzer einen Vorgang ausführt, der die Zustimmung erfordern würde, ruft das SDK die GetUserConsent
-Methode auf und übergibt die Ziel-URL als Parameter. In dieser Methode würde man die Anzeige der erforderlichen Informationen für den Benutzer implementieren, sodass er entscheiden kann, ob er der Nutzung des Diensts zustimmen oder nicht.
Einwilligungsoptionen
- AcceptAlways: Zustimmen und sich an die Entscheidung erinnern.
- Akzeptieren: Einmal zustimmen.
- Ablehnen: Nicht zustimmen.
Wenn das SDK die Benutzereinwilligung mit dieser Methode anfordert, sollte die Clientanwendung die URL für den Benutzer darstellen. Client-Anwendungen sollten eine Möglichkeit bieten, die Zustimmung des Benutzers einzuholen, und das entsprechende Zustimmungsenumeration zurückgeben, das der Entscheidung des Benutzers entspricht.
Beispielimplementierung
consent_delegate_impl.h
class ConsentDelegateImpl final : public mip::ConsentDelegate {
public:
ConsentDelegateImpl() = default;
virtual mip::Consent GetUserConsent(const std::string& url) override;
};
consent_delegate_impl.cpp
Wenn das SDK eine Zustimmung erfordert, wird die GetUserConsent
-Methode vom SDK aufgerufen und die URL als Parameter übergeben. Im folgenden Beispiel wird der Benutzer benachrichtigt, dass das SDK eine Verbindung mit dieser bereitgestellten URL herstellt und dem Benutzer eine Option in der Befehlszeile bereitstellt. Basierend auf der Wahl durch den Benutzer akzeptiert oder abgelehnt der Benutzer die Zustimmung und wird an das SDK übergeben. Wenn der Benutzer die Zustimmung verweigert, löst die Anwendung eine Ausnahme aus, und es wird kein Aufruf an den Schutzdienst vorgenommen.
Consent ConsentDelegateImpl::GetUserConsent(const string& url) {
//Print the consent URL, ask user to choose
std::cout << "SDK will connect to: " << url << std::endl;
std::cout << "1) Accept Always" << std::endl;
std::cout << "2) Accept" << std::endl;
std::cout << "3) Reject" << std::endl;
std::cout << "Select an option: ";
char input;
std::cin >> input;
switch (input)
{
case '1':
return Consent::AcceptAlways;
break;
case '2':
return Consent::Accept;
break;
case '3':
return Consent::Reject;
break;
default:
return Consent::Reject;
}
}
Beim Testen oder Entwickeln oder bei der Verwendung nur der cloudbasierten Dienste kann ein Standard-ConsentDelegate
implementiert werden.
Consent ConsentDelegateImpl::GetUserConsent(const string& url) {
return Consent::AcceptAlways;
}
Im Produktionscode muss der Benutzer jedoch je nach regionalen oder geschäftlichen Anforderungen und Vorschriften eine Zustimmung treffen.