Microsoft Information Protection SDK - Consentement

La mip::Consent classe enum implémente une approche facile à utiliser qui permet aux développeurs d’applications de fournir une expérience de consentement personnalisée basée sur le point de terminaison accessible par le KIT de développement logiciel (SDK). La notification peut informer un utilisateur des données qui seront collectées, comment obtenir les données supprimées ou toute autre information requise par la loi ou les stratégies de conformité. Une fois que l’utilisateur accorde son consentement, l’application peut continuer. Ce délégué est appelé uniquement lorsque vous tentez d’accéder à Active Directory Rights Management Services (AD RMS). Il n’est pas appelé lors de l’accès aux services cloud. Si votre application ne prend pas en charge AD RMS, vous pouvez implémenter un délégué qui retourne toujours Consent.AcceptAlways.

Implementation

Le consentement est implémenté en étendant la mip::Consent classe de base et en implémentant GetUserConsent pour retourner l’une des mip::Consent valeurs d’énumération.

L’objet dérivé de mip::Consent est transmis au constructeur mip::FileProfile::Settings ou mip::ProtectionProfile::Settings.

Lorsqu’un utilisateur effectue une opération qui nécessite un consentement, le SDK appelle la GetUserConsent méthode, en passant l’URL de destination en tant que paramètre. C’est dans cette méthode que l’on implémente l’affichage des informations nécessaires à l’utilisateur, ce qui leur permet de prendre une décision quant à leur consentement ou non à l’utilisation du service.

  • AcceptAlways : Consentez et souvenez-vous de la décision.
  • Accepter : Consentement une seule fois.
  • Rejeter : Ne consentez pas.

Lorsque le SDK demande le consentement de l’utilisateur avec cette méthode, l’application cliente doit présenter l’URL à l’utilisateur. Les applications clientes doivent fournir certains moyens d’obtenir le consentement de l’utilisateur et retourner l’énumération de consentement appropriée qui correspond à la décision de l’utilisateur.

Exemple d'implémentation

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

};

Lorsque le Kit de développement logiciel (SDK) requiert le consentement, la GetUserConsent méthode est appelée par le KIT DE développement logiciel (SDK) et l’URL transmise en tant que paramètre. Dans l’exemple ci-dessous, l’utilisateur est averti que le Kit de développement logiciel (SDK) se connecte à cette URL fournie et fournit à l’utilisateur une option sur la ligne de commande. En fonction du choix de l’utilisateur, l’utilisateur accepte ou rejette le consentement et qui est transmis au Kit de développement logiciel (SDK). Si l’utilisateur refuse de donner son consentement, l’application lève une exception et aucun appel n’est effectué au service de protection.

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

Lors du test ou du développement, ou lors de l’utilisation uniquement des services cloud, une base ConsentDelegate peut être implémentée.

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

Toutefois, dans le code de production, l’utilisateur peut être tenu de présenter un choix de consentement, selon les exigences régionales ou commerciales et les réglementations.