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.
Opções de consentimento
- 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
consent_delegate_impl.h
class ConsentDelegateImpl final : public mip::ConsentDelegate {
public:
ConsentDelegateImpl() = default;
virtual mip::Consent GetUserConsent(const std::string& url) override;
};
consent_delegate_impl.cpp
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.