Share via


資格情報 UI を持つカスタム フェデレーション検索 Web パーツの作成

注意

このトピックでは、Microsoft Office Servers のためのインフラストラクチャの更新 に含まれる機能について説明します。更新をダウンロードする方法については、「Microsoft Office サーバー製品インフラストラクチャ更新プログラムについて : 2008 年 7 月 15 日」を参照してください。

Microsoft Office SharePoint Server 2007 でのエンタープライズ検索 を使用してフェデレーション場所を作成するとき、検索サーバーのクローラでインデックス処理されていないコンテンツ リポジトリのアイテムを含めることができます。フェデレーション場所を作成するときは、認証の種類も指定する必要があります。

認証の種類を指定する

作成するフェデレーション場所の認証の種類として以下のいずれかを指定できます。

  • **匿名   **フェデレーション場所への接続に資格情報は必要ありません。

  • 共通   各接続が同じ資格情報のセットを使用してフェデレーション場所に接続します。

  • **ユーザーごと   **検索クエリを送信したユーザーの資格情報を使用してフェデレーション場所に接続します。

共通およびユーザーごとの認証の種類について、次のいずれかの認証プロトコルを指定する必要があります。

  • 基本

  • ダイジェスト

  • NTLM アプリケーション プール ID (共通の認証の種類のみ)

  • NTLM

  • Kerberos (ユーザー単位の認証のみ)

  • フォーム

  • Cookie

フェデレーション検索 Web パーツを使用してユーザー資格情報にアクセスする

フェデレーション場所が OpenSearch 場所にあり、その場所がユーザー単位の認証で構成されているシナリオでは、Kerberos 認証が使用されていれば、ユーザーの資格情報は自動的に渡されます。ただし、他の認証プロトコルでは資格情報は自動的には渡されません。このようなシナリオで認証を使用するためには、ユーザーの資格情報を要求するフェデレーション検索 Web パーツのカスタム バージョンを作成して、資格情報がフェデレーション場所への要求で渡されるようにします。

ここでは、エンタープライズ検索 の資格情報ユーザー インターフェイス (UI) を含むカスタム バージョンのフェデレーション検索 Web パーツを作成するための要件を示し、その方法を説明します。

まず、エンタープライズ検索 の新しいフェデレーション検索 Web パーツ (フェデレーション検索結果および上位フェデレーション検索結果) と、Microsoft.Office.Server.Search.WebControls 名前空間にあるそれらのパーツに関連するクラスを調べます。

注意

エンタープライズ検索 のクエリ オブジェクト モデル (Microsoft.Office.Server.Search.Query 名前空間にある) では、フェデレーション検索結果へのアクセスは提供されません。フェデレーション検索 UI をカスタマイズするには、新しいフェデレーション検索 Web パーツのどちらかを継承するクラスを実装する必要があります。

フェデレーション検索結果 Web パーツ

フェデレーション検索結果 Web パーツによって、指定したフェデレーション場所の結果が表示されます。フェデレーション検索結果 Web パーツにはフェデレーション場所を 1 つだけ指定できます。既定では、エンタープライズ検索 によって 2 つのフェデレーション検索結果 Web パーツが提供されます。 1 つは Windows Live Search の関連検索を表示し、もう 1 つは Windows Live Search 結果を表示します。

フェデレーション検索結果 Web パーツを Microsoft.Office.Server.Search.WebControls.FederatedResultsWebPart クラスに実装します。

フェデレーション検索結果 Web パーツ

上位フェデレーション検索結果 Web パーツによって、検索結果を返す最初のフェデレーション場所の結果が表示されます。この Web パーツには複数の場所を優先順位を付けて構成できます。既定では、この Web パーツには場所は構成されていません。

上位フェデレーション検索結果 Web パーツは Microsoft.Office.Server.Search.WebControls.TopFederatedResultsWebPart クラスに実装できます。

SearchResultsBaseWebPart 基本クラス

FederatedResultsWebPart クラスと TopFederatedResultsWebPart クラスは両方とも同じ基本クラス Microsoft.Office.Server.Search.WebControls.SearchResultsBaseWebPart を継承します。

Web パーツ プロジェクトを作成する

Microsoft Office SharePoint Designer 2007 を使用すると、Web ページに Web パーツをインポートすることはできますが、新しい Web パーツを作成することはできません。カスタム Web パーツ アセンブリを開発するには、Microsoft Visual Studio 2005 などの開発ツールを使用する必要があります。

カスタム Web パーツの作成のために Visual Studio 2005 を使用する方法の詳細については、以下を参照してください。

プロジェクトに参照を追加する

クラス ライブラリまたは Web コントロール ライブラリ プロジェクト テンプレートを使用して Visual Studio 2005 でプロジェクトを作成することで、カスタム Web パーツ ソリューションの作成を開始することもできます。プロジェクトを作成したら、以下の参照をプロジェクトに追加する必要があります。

  • Microsoft Search コンポーネント (Microsoft.Office.Server.Search.dll)

  • Windows SharePoint Services (Microsoft.SharePoint.dll)

Web パーツにクラスを追加する

クラスを Web パーツ プロジェクトに追加して、そのクラスがフェデレーション検索 Web パーツのいずれかのクラスを継承することを指定する必要があります。以下に、カスタム Web パーツのクラス宣言の例を示します。

コード例 1. SearchResultsBaseWebPart クラスの継承

public class CustomFederatedSearchWebPart : Microsoft.Office.Server.Search.WebControls.SearchResultsBaseWebPart 

コード例 2. FederatedResultsWebPart クラスの継承

public class CustomFederatedSearchWebPart : Microsoft.Office.Server.Search.WebControls.FederatedResultsWebPart

コード例 3. TopFederatedResultsWebPart クラスの継承

public class CustomFederatedSearchWebPart : Microsoft.Office.Server.Search.WebControls.TopFederatedResultsWebPart 

カスタム Web パーツのクラスを実装する

フェデレーション場所がリモート サーバーにある場合のユーザー単位の認証シナリオをサポートするためにカスタム Web パーツを実装するには、以下の 3 つの手順を実行します。

  1. ユーザーに資格情報を要求します。

  2. ユーザーの資格情報を使用して ICredentials オブジェクトを作成します。

  3. フェデレーション場所への検索要求に ICredentials オブジェクトを渡します。

セキュリティに関する留意事項

ユーザーから資格情報を取得するときは安全な接続を使用するように強くお勧めします。

ユーザーの資格情報を要求する

カスタム Web パーツ ソリューションの UI で、ユーザーが資格情報を入力するための手段を提供する必要があります。この UI は、Web パーツにユーザーの資格情報がない場合のみを表示します。

資格情報 UI を表示するために以下のどちらかのメソッドを上書きできます。

  • Render

  • CreateChildControls

どちらのメソッドにも、ユーザー資格情報が既にあるかどうかを確認して、ある場合には資格情報 UI をレンダリングしないようにするためにコードを含める必要があります。コードの後には、資格情報 UI を表示するために base.Render() または base.CreateChildControls() を呼び出す必要もあります。

注意

カスタム Web パーツを検索結果ページに追加したら、Web パーツをページに表示する前に、Web パーツのフェデレーション場所をツール ウィンドウで構成する必要があります。

ICredentials オブジェクトを作成する

ICredentials オブジェクトを作成して、ユーザーが入力したユーザー資格情報を渡します。

このソリューションのために 1 つの Web パーツを作成している場合 (資格情報 UI がカスタム フェデレーション検索結果と同じ Web パーツに表示されるようになる) は、Web パーツの OnLoad メソッドを上書きして資格情報を取得することができます。以下のコード例に示すように、ページがポストバックされたかどうかを確認して、ユーザーが入力した資格情報を確認すべきかどうかを判別できます。

protected override void OnLoad(EventArgs e)
{
   if (this.Page.IsPostBack)
   {
/*
uCredentials is a class level variable for an ICredentials object.
domainName is a string variable containing the domain
userName and passWord are examples of text box controls added in the previous step.
*/
      uCredentials = new NetworkCredential(userName.Text, passWord.Text, domainName);
   }
   base.OnLoad(e);
}

資格情報 UI が、フェデレーション検索結果とは別の Web パーツに含まれる場合は、Web パーツの Init メソッドを上書きする必要があります。

資格情報をフェデレーション場所に渡す

ユーザーから資格情報を取得したら、検索要求に渡してからフェデレーション場所に渡すことができます。これは、Web パーツに関連付けられているデータ ソース オブジェクトの UserCredentials プロパティの設定によって行います。

各フェデレーション検索 Web パーツ クラスには、以下の表に示すようにデータ ソース クラスが関連付けられています。

Web パーツ クラス

データ ソース クラス

SearchResultsBaseWebPart

SearchResultsBaseDatasource

FederatedResultsWebPart

FederatedResultsDatasource

TopFederatedResultsWebPart

TopFederatedResultsDatasource

Web パーツのフェデレーション場所のデータ ソース プロパティを構成するには、以下の例に示すように ConfigureDataSourceProperties メソッドを上書きし、データ ソースの UserCredentials.Add メソッドを呼び出す必要があります。

protected override void ConfigureDataSourceProperties()
{
    base.ConfigureDataSourceProperties();
    SearchResultsBaseDatasource ds = this.DataSource as SearchResultsBaseDatasource;
    ds.UserCredentials.Add("LocationInternalName", uCredentials);
}

See Also

参照

WebControls

SearchResultsBaseWebPart

SearchResultsBaseDatasource

SearchResultsBaseDatasourceView

FederatedResultsWebPart

FederatedResultsDatasource

FederatedResultsDatasourceView

TopFederatedResultsWebPart

TopFederatedResultsDatasource

概念

フェデレーション検索の概要

カスタム フェデレーション検索 Web パーツのサンプル