SharePoint 2010 に検索用のカスタム クレーム プロバイダをインストールする必要がある場合とは

原文の記事の投稿日: 2012 年 3 月 21 日 (水曜日)

最近、カスタム クレーム プロバイダーと検索に関する "すばらしい" ("興味がある" という意味) 話し合いの機会がありました。そこでわかったことは、検索結果内でセキュリティによるトリミングを適切に機能させるためには、検索ボックス (以下で定義する "ボックス" のようなもの) にカスタム クレーム プロバイダーをインストールする必要がある場合があることです。ただし、これを適用する条件は、FAST Search 2010 または SharePoint Search 2010 のどちらを使用するかによって異なります。

まず、少し説明が必要です。ユーザーがクエリを実行するたびに、ユーザー トークン内のクレームはデコードされます。ただし、SiteData Web サービス (クローラーがコンテンツに関するセキュリティ情報を取得するために使用する Web サービス) は、エンコードされたクレームを常に返します。これをどうやって一致させることができるでしょうか。

FAST Search 2010 では、クレームは、保管される前に FAST Search 2010 インデクサーによって常にデコードされます。これは、FAST Query サーバーに SharePoint がインストールされていないので、FAST Query サーバーでクレームをエンコードできないためです。ユーザー クレームはデコードされてやってきます。このため、SiteData Web アプリケーションによって返されるエンコードされたクレームとの照合を行うには、ユーザー クレームをエンコードして比較を行う必要があります。私たちはカスタム クレーム プロバイダーを FAST Query サーバーにインストールできないため、SiteData Web サービスから取得したクレームをデコードする必要があります。そして、これを行うには、使用されている任意のカスタム クレーム プロバイダーを FAST コンテンツの SSA にインストールする必要があります。これにより、私たちはクレームをデコードし、デコードしたクレームを保管し、そしてデコードされたユーザー クレームが提供されたときに比較を行うことができます。このため、FAST の場合、私たちの関心事は、クロール時に任意のカスタム クレーム プロバイダを使用することです。

SharePoint Search 2010 の場合、逆の問題があります。SharePoint はあらゆる場所にインストールされると予想されます。そのため、SharePoint は、クエリ時にユーザーからのクレームをエンコードできるという前提で動作します。したがって、コンテンツ用に保管されている ACL との比較を行うことができます。この前提が崩れるのは、カスタム クレーム プロバイダーが、クエリ プロセッサ (Query and Site Settings Service とも呼ばれる) が実行されているサーバーに展開されていないシナリオです。ほとんどの場合、カスタム クレーム プロバイダーはファーム内のすべてのサーバー (WFE およびアプリケーション サーバー) にインストールされます。クエリ プロセッサには、クレームのエンコードのために、このカスタム クレーム プロバイダーがインストールされている必要があります。したがって、すべてが 1 つのファーム内で実行されており、カスタム クレーム プロバイダーがすべてのサーバーにインストールされている場合、問題はありません。最近 1 つの状況 (この投稿を誘発した状況) に直面しました。それは、別のサービス ファームがあり、そのファームから SharePoint Search サービスが使用されているシナリオです。この場合、Query and Site Settings Service が実行されているサービス ファーム内のすべてのサーバーにすべてのカスタム クレーム プロバイダーをインストールする必要があります。これを行わない場合、ユーザーのカスタム クレームを評価できません。通常は、この結果として、検索結果が返されません。

これは興味深いシナリオであり、個性的な方たち、特に、最後の難関を乗り越えることに協力してくれた、才能豊かな弟 Luca や、Sanjeev および Michael P. によって偉大な解決作業が行われました。この問題の理解に協力していただいたすべての皆様に感謝の言葉を申し上げます。

これはローカライズされたブログ投稿です。原文の記事は「When Do You Need to Install a Custom Claims Provider for Search in SharePoint 2010」をご覧ください。