Microsoft Information Protection SDK: consentimiento

La clase enum implementa un enfoque fácil de usar que permite a los desarrolladores de aplicaciones proporcionar una experiencia de consentimiento personalizada basada en el punto de conexión al que tiene acceso mip::Consent el SDK. La notificación puede informar a un usuario de los datos que se recopilarán, cómo quitar los datos o cualquier otra información que requiera la legislación o las directivas de cumplimiento. Una vez que el usuario conceda su consentimiento, la aplicación puede continuar.

Implementación

El consentimiento se implementa ampliando la mip::Consent clase base e implementando para devolver uno GetUserConsent de los valores de mip::Consent enumeración.

El objeto derivado de mip::Consent se pasa al constructor mip::FileProfile::Settingsmip::ProtectionProfile::Settings o.

Cuando un usuario realiza una operación que requeriría el consentimiento, el SDK llama al método, pasando la dirección URL de destino GetUserConsent como parámetro. Es en este método donde se implementaría mostrar la información necesaria al usuario, lo que le permite tomar una decisión sobre si acepta o no el uso del servicio.

  • AcceptAlways:Consiente y recuerde la decisión.
  • Aceptar:Consentimiento una vez.
  • Rechazar:No dar su consentimiento.

Cuando el SDK solicita el consentimiento del usuario con este método, la aplicación cliente debe presentar la dirección URL al usuario. Las aplicaciones cliente deben proporcionar algunos medios para obtener el consentimiento del usuario y devolver el consentimiento adecuado que corresponda a la decisión del usuario.

Implementación de ejemplo

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

};

Cuando el SDK requiere consentimiento, el SDK llama al método y la dirección URL se GetUserConsent pasa como parámetro. GetUserConsent En el ejemplo siguiente, se notifica al usuario que el SDK se conectará a esa dirección URL proporcionada y proporciona al usuario una opción en la línea de comandos. Según la elección del usuario, el usuario acepta o rechaza el consentimiento y se pasa al SDK. Si el usuario se niega a dar su consentimiento, la aplicación producirá una excepción y no se realizará ninguna llamada al servicio de protección.

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;
  }  
}

Para fines de prueba y desarrollo, se puede implementar una sencilla que ConsentDelegate tenga el siguiente aspecto:

Consent ConsentDelegateImpl::GetUserConsent(const string& url) {
  return Consent::AcceptAlways;
}

Sin embargo, en el código de producción es posible que se le requiera al usuario que se le presente una opción de consentimiento, según los requisitos y normativas regionales o empresariales.