次の方法で共有


Microsoft Information Protection SDK - 同意

mip::Consent列挙型クラスは、アプリケーション開発者が SDK によってアクセスされるエンドポイントに基づいてカスタム同意エクスペリエンスを提供できるようにする使いやすいアプローチを実装しています。 この通知は、収集されるデータ、データを削除する方法、または法律またはコンプライアンス ポリシーで必要とされるその他の情報をユーザーに通知できます。 ユーザーが同意を付与すると、アプリケーションは続行できます。 このデリゲートは、Active Directory Rights Management Services (AD RMS) へのアクセスを試みる場合にのみ呼び出されます。 クラウド サービスにアクセスするときに呼び出されません。 アプリケーションで AD RMS がサポートされない場合は、常に Consent.AcceptAlwaysを返すデリゲートを実装できます。

実装

同意は、mip::Consent基本クラスを拡張し、mip::Consent列挙値のいずれかを返すGetUserConsentを実装することによって実装されます。

mip::Consentから派生したオブジェクトは、mip::FileProfile::Settingsまたはmip::ProtectionProfile::Settingsコンストラクターに渡されます。

ユーザーが同意を必要とする操作を実行すると、SDK は GetUserConsent メソッドを呼び出し、宛先 URL をパラメーターとして渡します。 このメソッドでは、必要な情報をユーザーに表示し、サービスの使用に同意するかどうかの決定を行うことができます。

  • AcceptAlways: 同意し、決定を覚えておいてください。
  • 同意する: 1 回同意します。
  • 拒否: 同意しない。

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

ただし、運用コードでは、地域またはビジネスの要件や規制に応じて、ユーザーに同意の選択肢を提示する必要がある場合があります。