Partilhar via


SDK de Proteção de Informações da Microsoft - Consentimento

A mip::Consent classe enum implementa uma abordagem fácil de usar que permite que os desenvolvedores de aplicativos forneçam uma experiência de consentimento personalizada com base no ponto de extremidade que está sendo acessado pelo SDK. A notificação pode informar um usuário sobre os dados que serão coletados, como obter os dados removidos ou qualquer outra informação que seja exigida por lei ou políticas de conformidade. Uma vez que o usuário conceda consentimento, o aplicativo pode continuar. Esse delegado é chamado somente ao tentar acessar o Ative Directory Rights Management Services (AD RMS). Ele não é chamado ao acessar serviços de nuvem. Se o seu aplicativo não oferecer suporte ao AD RMS, você poderá implementar um delegado que sempre retornará Consent.AcceptAlways.

Implementação

O consentimento é implementado estendendo a mip::Consent classe base e implementando GetUserConsent para retornar um dos valores de mip::Consent enum.

O objeto derivado de mip::Consent é passado para o mip::FileProfile::Settings construtor ou mip::ProtectionProfile::Settings .

Quando um usuário executa uma operação que exigiria o fornecimento de consentimento, o SDK chama o GetUserConsent método, passando a URL de destino como parâmetro. É neste método que se implementaria a exibição das informações necessárias ao usuário, permitindo que ele tome uma decisão sobre se consente ou não em usar o serviço.

  • AceitarSempre: Consentimento e lembre-se da decisão.
  • Aceitar: Consentimento uma vez.
  • Rejeitar: Não consinta.

Quando o SDK solicita o consentimento do usuário com esse método, o aplicativo cliente deve apresentar a URL para o usuário. Os aplicativos clientes devem fornecer alguns meios de obter o consentimento do usuário e retornar o enum de consentimento apropriado que corresponde à decisão do usuário.

Exemplo de implementação

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

};

Quando o SDK requer consentimento, o GetUserConsent método é chamado pelo SDK e a URL é passada como um parâmetro. No exemplo abaixo, o usuário é notificado de que o SDK se conectará a essa URL fornecida e fornece ao usuário uma opção na linha de comando. Com base na escolha do usuário, o usuário aceita ou rejeita o consentimento e que é passado para o SDK. Se o usuário se recusar a consentir, o aplicativo lançará uma exceção e nenhuma chamada será feita para o serviço de proteção.

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

Quando em teste, ou desenvolvimento, ou ao usar apenas os serviços baseados em nuvem, um básico ConsentDelegate pode ser implementado.

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

No entanto, no código de produção, o usuário pode ser obrigado a ter a opção de consentimento, dependendo dos requisitos e regulamentos regionais ou de negócios.