3 つの ISV ページ展開シナリオ - CRM Web サービスを呼び出した場合の認証について -

みなさん、こんにちは。

カスタム Web ページ(以下、「ISV ページ」と記述します)を CRM Web サイトの ISV フォルダに展開することによって、設置型、インターネット接続展開 (IFD : Internet Facing Deployment) 、オフラインアクセス対応 Outlook 用 Dynamics CRM のオフライン環境など、さまざまな環境で ISV ページを使用することができます。
Dynamics CRM では CrmImpersonator クラスが提供されており、このクラスを使用すると Dynamics CRM で使用しているセキュリティコンテキストを ISV ページで利用することができます。

今日は次の 3 つの展開シナリオを想定し、ISV ページから CRM Web サービスを呼び出した場合にどのように認証されるかを紹介します。

シナリオ 1 : CRM Web サイトの ISV フォルダに ISV ページを展開する場合

シナリオ詳細
ISV.config またはサイトマップを使用して CRM Web ページに追加されたリンクから ISV ページにアクセスします。

認証
このシナリオでは、CrmImpersonator クラスを使用して、設置型、IFD のどちらの環境でも Dynamics CRM で使用している資格情報を利用することができます。詳細とサンプルコードについては、次の SDK ページを参照してください。

Authentication from an ASPX Page
https://msdn.microsoft.com/ja-jp/library/cc151050(en-us).aspx

設置型環境で ISV ページにアクセスした場合、統合 Windows 認証が使用されます。
IFD 環境では ISV ページにアクセスした場合、フォーム認証が使用されます。

シナリオ 2 : CRM Web サイト以外の Web サイトに ISV ページを展開し、非 CRM ユーザーが ISV ページにアクセスする場合

シナリオ詳細
Dynamics CRM に他システムで入力された情報を直接取り込みたい場合があるとします。
たとえば、製品フィードバック Web サイトを使用してお客様からのフィードバックを収集し、フィードバック Web サイトに展開された ISV ページから CRM Web サービスを呼び出し、フィードバックを Dynamics CRM に取り込みたい場合、フィードバック Web サイトのすべての使用者を Dynamics CRM ユーザーとして登録する必要はありません。フィードバック Web サイトの使用者を 1 人の特定 CRM ユーザーとして偽装させることができます。

認証
このシナリオは、設置型および  IFD のどちら環境でも実現することができます。
Dynamics CRM が設置型環境の場合は、次の SDK ページに記載されている方法で偽装することができます。

Impersonation
https://msdn.microsoft.com/ja-jp/library/cc151052(en-us).aspx

Dynamics CRM が IFD 環境の場合は、次の SDK ページに記載されている方法で偽装することができます。

Web Form (IFD) Authentication
https://msdn.microsoft.com/ja-jp/library/cc151054(en-us).aspx

この2番目のシナリオに関しては、現実的に考えた場合 ISV ページは Windows フォームや他のプログラムである場合が多いでしょう。

シナリオ 3 : CRM Web サイト以外の Web サイトに ISV ページを展開し、CRM ユーザーが ISV ページにアクセスする場合

シナリオ詳細
ISV ページは CRM Web サイト以外の Web サイトに展開されています。たとえば、SharePoint サイトに ISV ページが展開されているとします。SharePoint サイトと CRM サイト間には何らかのインテグレーションがあると仮定します。ユーザーからの Request は、最初に SharePoint サイトに到達し、次に SharePoint サイトから CRM Web サイトに別の Request が送信され CRM Web サービスが呼び出されるとします。つまりダブルホップシナリオです。

認証
ダブルホップシナリオでは Kerberos 認証が必要なため Windows 認証を使用する設置型環境においてのみ有効なシナリオです。
サンプルコードは次の SDK ページを参照してください。

On-Premise Authentication
https://msdn.microsoft.com/ja-jp/library/cc151053(en-us).aspx

ダブルホップシナリオでは、委任の信頼および SPN の設定も必要となります。

参考情報:Custom Code Best Practices
https://msdn.microsoft.com/ja-jp/library/dd548493(en-us).aspx

情報元:在ISV页面中调用CRM Web Service时使用Impersonate的几个场景(中国語)
https://blogs.technet.com/crmchina/archive/2009/11/02/isv-crm-web-service-impersonate.aspx

先日、情報元となった中国語ブログを China Dynamics CRM Team に英訳してもらう機会がありました。
せっかく英訳してもらいましたので、みなさんにも内容を紹介できればと思い日本語訳してみましたが、いかがだったでしょうか。
CRM Team 内で情報交換しながら、公開できる情報を増やしていきたいと思います。では、また。

- Dynamics CRM サポート 斎藤 さち江