Partager via


Kit de développement logiciel (SDK) - Consentement

La classe enum mip::Consent implémente une approche simple d’utilisation 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 SDK. La notification peut informer un utilisateur des données qui seront collectées, le moyen d’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 aux services AD RMS (Active Directory Rights Management Services). Il n’est pas appelé lors de l’accès aux services cloud. Si votre application ne prendra pas en charge AD RMS, vous pouvez implémenter un délégué qui retourne toujours Consent.AcceptAlways.

Implémentation

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

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

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

  • AcceptAlways : Consentir et mémoriser la décision.
  • Accept : Consentir une fois.
  • Reject : Ne pas consentir.

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 de retourner l’énumération Consent 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 méthode GetUserConsent est appelée par le kit de développement logiciel (SDK) et l’URL est 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 ceci 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 des tests ou du développement, ou lors de l’utilisation des services cloud uniquement, un ConsentDelegate basique peut être implémenté.

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.