Compartir a través de


SDK de Microsoft Information Protection: Consentimiento

La clase de enumeración mip::Consent 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 y cómo eliminar esos datos o cualquier otra información que requiera la ley o las directivas de cumplimiento. Una vez que el usuario conceda su consentimiento, la aplicación podrá continuar. Solo se llama a este delegado cuando se intenta acceder a Active Directory Rights Management Services (AD RMS), pero no al acceder 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 clase base mip::Consent y la implementación de GetUserConsent para devolver uno de los valores de enumeración 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 requiere proporcionar consentimiento, el SDK llama al método GetUserConsent y pasa la dirección URL de destino como parámetro. Este método sería donde se implementaría la visualización de la información necesaria para el usuario, lo que les permitiría tomar una decisión sobre si dan su consentimiento para usar el servicio.

  • AcceptAlways: consentir y recordar la decisión.
  • Aceptar: consentir una vez.
  • Rechazar: no consentir.

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 corresponda 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 SDK llama al método GetUserConsent y la dirección URL se envía como parámetro. En el ejemplo siguiente, se notifica al usuario que el SDK se conectará a esa dirección URL proporcionada y facilitará 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 esa información 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 tareas de 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 se tenga que dar al usuario una opción para otorgar su consentimiento en función de los requisitos y normativas regionales o empresariales.