共用方式為


Microsoft資訊保護 SDK - 同意

mip::Consent列舉類別會實作易於使用的方法,允許應用程式開發人員根據SDK所存取的端點提供自定義同意體驗。 通知可以通知使用者將收集的數據、如何移除數據,或法律或合規性政策所需的任何其他資訊。 一旦使用者授與同意,應用程式就可以繼續。 只有在嘗試存取 Active Directory Rights Management Services (AD RMS) 時,才會呼叫此委派。 存取雲端服務時不會呼叫它。 如果您的應用程式不支援 AD RMS,您可以實作一個委派函數,一律傳回 Consent.AcceptAlways

實施

同意是通過擴充mip::Consent基類並實作GetUserConsent以返回mip::Consent枚舉值之一來實現的。

衍生自 mip::Consent 的物件會傳送至 mip::FileProfile::Settingsmip::ProtectionProfile::Settings 的建構函式。

當使用者執行需要同意的作業時,SDK 會呼叫 GetUserConsent 方法,並傳入目的地 URL 做為 參數。 此方法會實作向用戶顯示必要資訊,讓他們決定他們是否同意使用服務。

  • AcceptAlways:同意並記住決策。
  • 接受:同意一次。
  • 拒絕:不同意。

當 SDK 要求使用者同意此方法時,用戶端應用程式應該向使用者顯示 URL。 用戶端應用程式應該提供一些方法來取得使用者的同意,並傳回符合使用者決策的適當同意列舉。

範例實作

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

};

當 SDK 需要同意時,SDK 會呼叫GetUserConsent方法,並將 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;
}

不過,根據地區或商務需求和法規,在生產程序代碼中,使用者可能需要出示同意選擇。