SDK de Microsoft Information Protection: consentimiento

La mip::Consent clase enum 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 sobre los datos que recopila el SDK, cómo quitar los datos u otra información que la ley o las directivas de cumplimiento requieran. Una vez que el usuario concede consentimiento, la aplicación puede continuar. El SDK llama a este delegado solo cuando intenta acceder a Active Directory Rights Management Services (AD RMS). No llama al delegado cuando 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

Implemente el consentimiento extendiendo la clase base mip::Consent e implementando GetUserConsent para devolver uno de los valores de la enumeración mip::Consent.

Pase el objeto derivado de mip::Consent al constructor mip::ProtectionProfile::Settings o mip::FileProfile::Settings.

Cuando un usuario realiza una operación que requiere consentimiento, el SDK llama al GetUserConsent método y pasa la dirección URL de destino como parámetro. En este método, muestre la información necesaria al usuario para que pueda decidir si desea dar 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, llama al GetUserConsent método y pasa la dirección URL como parámetro. En el ejemplo siguiente, la aplicación notifica al usuario que el SDK se conecta a esa dirección URL y proporciona al usuario una opción en la línea de comandos. En función de la elección del usuario, la aplicación pasa la decisión de consentimiento al SDK. Si el usuario rechaza el consentimiento, la aplicación produce una excepción y no llama 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;
  }  
}

Al probar, desarrollar o usar solo los servicios basados en la nube, puede implementar un elemento básico ConsentDelegate.

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

En el código de producción, los requisitos regionales o empresariales y las regulaciones pueden requerir que la aplicación presente al usuario con la opción de dar su consentimiento.