Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс перечисления mip::Consent предоставляет простой в использовании способ, позволяющий разработчикам приложений задавать собственный сценарий получения согласия в зависимости от конечной точки API, к которой обращается SDK. Уведомление может сообщить пользователю о собранных данных, способах удаления данных или любых других сведений, необходимых политикам законодательства или соответствия требованиям. После предоставления пользователю согласия приложение сможет продолжить работу. Этот делегат вызывается только при попытке доступа к службам управления правами Active Directory (AD RMS). Он не вызывается при доступе к облачным службам. Если ваше приложение не будет поддерживать AD RMS, вы можете реализовать делегат, который всегда возвращает Consent.AcceptAlways.
Внедрение
Согласие реализуется путём расширения базового класса mip::Consent и реализации GetUserConsent, чтобы возвращать одно из значений перечисления mip::Consent.
Объект, производный от mip::Consent, передаётся в конструктор mip::FileProfile::Settings или mip::ProtectionProfile::Settings.
Когда пользователь выполняет операцию, требующую предоставления согласия, пакет SDK вызывает GetUserConsent метод, передав url-адрес назначения в качестве параметра. Именно в этом методе следует реализовать отображение необходимой информации для пользователя, чтобы он мог принять решение о том, даёт ли он согласие на использование сервиса.
Параметры согласия
- AcceptAlways: Согласиться и запомнить решение.
- Примите: согласие один раз.
- Отклонить: не соглашайтесь.
Когда пакет SDK запрашивает согласие пользователя с этим методом, клиентское приложение должно представить URL-адрес пользователю. Клиентские приложения должны предоставлять тот или иной способ получения согласия пользователя и возвращать соответствующее значение перечисления Consent, которое соответствует решению пользователя.
Пример реализации
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;
}
Однако в рабочем коде пользователю может потребоваться предоставить выбор согласия в зависимости от региональных или бизнес-требований и нормативных требований.