Microsoft Information Protection SDK - Consenso
La mip::Consent
classe enum implementa un approccio facile da usare che consente agli sviluppatori di applicazioni di fornire un'esperienza di consenso personalizzata in base all'endpoint a cui si accede dall'SDK. La notifica può informare un utente dei dati che verranno raccolti, come rimuovere i dati o qualsiasi altra informazione richiesta dalla legge o dai criteri di conformità. Dopo che l'utente concede il consenso, l'applicazione può continuare. Questo delegato viene chiamato solo quando si tenta di accedere ad Active Directory Rights Management Services (AD RMS). Non viene chiamato quando si accede ai servizi cloud. Se l'applicazione non supporta AD RMS, è possibile implementare un delegato che restituisce Consent.AcceptAlways
sempre .
Implementazione
Il consenso viene implementato estendendo la mip::Consent
classe base e implementando GetUserConsent
per restituire uno dei mip::Consent
valori di enumerazione.
L'oggetto derivato da mip::Consent
viene passato al mip::FileProfile::Settings
costruttore o mip::ProtectionProfile::Settings
.
Quando un utente esegue un'operazione che richiede il consenso, l'SDK chiama il GetUserConsent
metodo , passando l'URL di destinazione come parametro. Si trova in questo metodo in cui si implementa la visualizzazione delle informazioni necessarie all'utente, consentendo loro di prendere una decisione sul fatto che acconsentono o meno all'uso del servizio.
Opzioni di consenso
- AcceptAlways: consenso e ricordare la decisione.
- Accetta: consenso una sola volta.
- Rifiuta: non fornire il consenso.
Quando l'SDK richiede il consenso dell'utente con questo metodo, l'applicazione client deve presentare l'URL all'utente. Le applicazioni client devono fornire alcuni mezzi per ottenere il consenso dell'utente e restituire l'enumerazione di consenso appropriata che corrisponde alla decisione dell'utente.
Implementazione di esempio
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 l'SDK richiede il consenso, il GetUserConsent
metodo viene chiamato dall'SDK e l'URL passato come parametro. Nell'esempio seguente, l'utente riceve una notifica che l'SDK si connetterà a tale URL fornito e fornisce all'utente un'opzione nella riga di comando. In base alla scelta dell'utente, l'utente accetta o rifiuta il consenso e che viene passato all'SDK. Se l'utente rifiuta il consenso, l'applicazione genererà un'eccezione e non verrà effettuata alcuna chiamata al servizio di protezione.
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;
}
}
Durante i test o lo sviluppo o quando si usano solo i servizi basati sul cloud, è possibile implementare una configurazione di base ConsentDelegate
.
Consent ConsentDelegateImpl::GetUserConsent(const string& url) {
return Consent::AcceptAlways;
}
Tuttavia, nel codice di produzione, l'utente potrebbe essere tenuto a scegliere di fornire il consenso, a seconda dei requisiti e delle normative regionali o aziendali.