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.AcceptAlwayssempre .

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.

  • 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

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

};

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.