Поделиться через


Пакет SDK Microsoft Information Protection — согласие

Класс mip::Consent перечисления реализует простой подход, позволяющий разработчикам приложений предоставлять пользовательский интерфейс согласия на основе конечной точки, к которой осуществляется доступ с помощью пакета SDK. Уведомление может сообщить пользователю о собранных данных, способах удаления данных или любых других сведений, необходимых политикам законодательства или соответствия требованиям. После предоставления пользователю согласия приложение сможет продолжить работу. Этот делегат вызывается только при попытке доступа к службы Active Directory Rights Management (AD RMS). Он не вызывается при доступе к облачным службам. Если приложение не поддерживает AD RMS, вы можете реализовать делегат, который всегда возвращается Consent.AcceptAlways.

Внедрение

Согласие реализуется путем расширения mip::Consent базового класса и реализации GetUserConsent для возврата одного из значений mip::Consent перечисления.

Объект, производный mip::FileProfile::Settings от mip::Consent объекта, передается в конструктор или mip::ProtectionProfile::Settings конструктор.

Когда пользователь выполняет операцию, требующую предоставления согласия, пакет SDK вызывает GetUserConsent метод, передав url-адрес назначения в качестве параметра. Он находится в этом методе, где будет реализовано отображение необходимых сведений пользователю, что позволяет им принимать решение о том, согласились ли они использовать службу.

  • ПринятьAlways: Согласие и вспомнить решение.
  • Примите: согласие один раз.
  • Отклонить: не соглашайтесь.

Когда пакет SDK запрашивает согласие пользователя с этим методом, клиентское приложение должно представить URL-адрес пользователю. Клиентские приложения должны предоставлять некоторые средства получения согласия пользователя и возвращать соответствующую перечисление согласия, соответствующее решению пользователя.

Пример реализации

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

};

Если пакет SDK требует согласия, GetUserConsent метод вызывается пакетом SDK и URL-адресом, переданным в качестве параметра. В приведенном ниже примере пользователь уведомляется о том, что пакет SDK подключится к указанному URL-адресу и предоставляет пользователю параметр в командной строке. В зависимости от выбора пользователя пользователь принимает или отклоняет согласие и передается в пакет SDK. Если пользователь отклонится от согласия, приложение вызовет исключение и не будет вызываться в службу защиты.

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

При тестировании или разработке или при использовании только облачных служб можно реализовать базовый ConsentDelegate элемент.

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

Однако в рабочем коде пользователю может потребоваться предоставить выбор согласия в зависимости от региональных или бизнес-требований и нормативных требований.