Compartir a través de


SDK de Microsoft Information Protection: consentimiento

La mip::Consent 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 accede 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 ley o las directivas de cumplimiento. Una vez que el usuario concede consentimiento, la aplicación puede continuar. Solo se llama a este delegado al intentar acceder a Active Directory Rights Management Services (AD RMS). No se invoca cuando se accede a los servicios en la nube. Si la aplicación no admite AD RMS, puede implementar un delegado que siempre devuelva Consent.AcceptAlways.

Implementación

El consentimiento se implementa mediante la extensión de la mip::Consent clase base y la implementación de GetUserConsent para devolver uno de los valores del enumerado mip::Consent.

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

Cuando un usuario realiza una operación que requeriría proporcionar consentimiento, el SDK llama al GetUserConsent método y pasa la dirección URL de destino como parámetro. Se encuentra en este método donde se implementaría la visualización de la información necesaria al usuario, lo que les permite tomar una decisión sobre si dan su consentimiento para usar el servicio.

  • AcceptAlways: consentir y recordar la decisión.
  • Aceptar: consentimiento una vez.
  • Rechazar: no dé 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 la enumeración de consentimiento adecuada que corresponde a la decisión del usuario.

Ejemplo de implementación

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

};

Cuando el SDK requiere consentimiento, el método GetUserConsent es llamado por el SDK, y la dirección URL se pasa como parámetro. En el ejemplo siguiente, se notifica al usuario que el SDK se conectará a esa dirección URL proporcionada y proporcionará al usuario una opción en la línea de comandos. En función de la elección por parte del usuario, el usuario acepta o rechaza el consentimiento y que se pasa al SDK. Si el usuario rechaza el consentimiento, la aplicación iniciará 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;
  }  
}

Cuando se realizan pruebas o desarrollo, o cuando se usan solo los servicios basados en la nube, se puede implementar un elemento básico ConsentDelegate .

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

Sin embargo, en el código de producción, es posible que el usuario tenga que presentar una opción para dar su consentimiento, en función de los requisitos y regulaciones regionales o empresariales.