Пакет 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-адрес пользователю. Клиентские приложения должны предоставлять некоторые средства получения согласия пользователя и возвращать соответствующую перечисление согласия, соответствующее решению пользователя.
Пример реализации
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
Если пакет 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;
}
Однако в рабочем коде пользователю может потребоваться предоставить выбор согласия в зависимости от региональных или бизнес-требований и нормативных требований.