Share via


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.

  • 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

class ConsentDelegateImpl final : public mip::ConsentDelegate {
public:
  ConsentDelegateImpl() = default;
  
  virtual mip::Consent GetUserConsent(const std::string& url) override;

};

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.