Share via


Création d'un composant WebPart personnalisé de recherche fédérée avec une interface utilisateur informations d'identification

Notes

Cette rubrique décrit la fonctionnalité qui fait partie de la Infrastructure Update for Microsoft Office Servers. Pour télécharger la mise à jour, voir Description de la mise à jour d'infrastructure SharePoint Server 2007 : 15 juillet 2008.

L'utilisation de Recherche de contenu d'entreprise dans Microsoft Office SharePoint Server 2007 pour créer des emplacements fédérés permet d'inclure des éléments d'espaces de stockage de contenu qui ne sont pas indexés par le robot d'indexation du serveur de recherche. Lorsque vous créez un emplacement fédéré, vous devez également spécifier son type d'authentification.

Spécification d'un type d'authentification

Le type d'authentification d'un emplacement fédéré que vous créez peut être :

  • Anonyme aucune information d'identification n'est nécessaire pour se connecter à l'emplacement fédéré.

  • Commun chaque connexion utilise le même ensemble d'informations d'identification pour se connecter à l'emplacement fédéré.

  • Par utilisateur les informations d'identification de l'utilisateur qui a envoyé la requête de recherche sont utilisées pour se connecter à l'emplacement fédéré.

Pour les types d'authentification commun et par utilisateur, vous devez également spécifier un des protocoles d'authentification suivants :

  • Simple

  • Digest

  • Identité du pool d'applications NTLM (type d'authentification commun uniquement)

  • NTLM

  • Kerberos (type d'authentification par utilisateur uniquement)

  • Formulaires

  • Cookie

Utilisation du composant WebPart de recherche fédérée pour accéder aux informations d'identification des utilisateurs

Dans les scénarios où l'emplacement fédéré est un emplacement OpenSearch et l'emplacement est configuré pour l'authentification par utilisateur, les informations d'identification de l'utilisateur sont passées automatiquement si l'authentification Kerberos est utilisée. Toutefois, les informations d'identification ne sont pas transmises automatiquement pour d'autres protocoles d'authentification. Pour que l'authentification fonctionne dans ces scénarios, vous devez créer les versions personnalisées des composants WebPart de recherche fédérée pour demander les informations d'identification de l'utilisateur afin que les informations d'identification puissent être passées dans la demande à l'emplacement fédéré.

Cette rubrique décrit les conditions préalables indispensables et propose des conseils pour la création d'une version personnalisée d'une recherche fédérée WebPart avec une interface utilisateur dédiée aux informations d'identification pour Recherche de contenu d'entreprise.

Nous examinerons d'abord dans Recherche de contenu d'entreprise les nouveaux composants WebPart de recherche fédérée (Federated Results et Top Federated Results), ainsi que les classes en rapport avec eux dans l'espace de noms Microsoft.Office.Server.Search.WebControls.

Notes

Le modèle objet de requête Recherche de contenu d'entreprise (situé dans l'espace de noms Microsoft.Office.Server.Search.Query) ne permet pas d'accéder aux résultats de la recherche fédérée. Pour personnaliser l'interface utilisateur de la recherche fédérée, vous devez implémenter une classe qui hérite d'un des nouveaux composants WebPart de recherche fédérée.

Composant WebPart Federated Results

Le composant WebPart Federated Results affiche les résultats à partir d'un emplacement fédéré spécifié. Vous pouvez spécifier un seul emplacement fédéré dans le composant WebPart Federated Results. Par défaut, Recherche de contenu d'entreprise propose deux composants WebPart Federated Results : l'un affiche les résultats relatifs à la recherche Windows Live Search, l'autre affiche les résultats de la recherche Windows Live.

Vous implémentez le composant WebPart Federated Results dans la classe Microsoft.Office.Server.Search.WebControls.FederatedResultsWebPart.

Composant WebPart Top Federated Results

Le composant WebPart Top Federated Results affiche les résultats de recherche à partir du premier emplacement fédéré. Vous pouvez configurer plusieurs emplacements pour ce composant WebPart, par ordre de priorité. Par défaut, aucun emplacement n'est configuré pour ce composant WebPart.

Vous implémentez le composant WebPart Top Federated Results dans la classe Microsoft.Office.Server.Search.WebControls.TopFederatedResultsWebPart.

Classe de base SearchResultsBaseWebPart

Les classes FederatedResultsWebPart et TopFederatedResultsWebPart héritent de la même classe de base : Microsoft.Office.Server.Search.WebControls.SearchResultsBaseWebPart.

Création d'un projet de composant WebPart

Vous pouvez utiliser Microsoft Office SharePoint Designer 2007 pour importer des composants WebPart dans des pages Web, mais pas pour créer des composants WebPart. Pour développer un assembly de composants WebPart, vous devez utiliser un outil de développement (ex. Microsoft Visual Studio 2005).

Pour plus d'informations sur l'utilisation de Visual Studio 2005 pour créer des composants WebPart, voir :

Ajout de références de projet

Vous pouvez également commencer à utiliser la solution avec un composant WebPart personnalisé : créez un projet dans Visual Studio 2005 en utilisant les modèles de projet de la bibliothèque de classes ou de la bibliothèque de contrôles Web. Lorsque vous avez créé le projet, vous devez y ajouter les références suivantes :

  • composant Microsoft Search (Microsoft.Office.Server.Search.dll) ;

  • Windows SharePoint Services (Microsoft.SharePoint.dll).

Ajout de la classe de composant WebPart

Vous devez ajouter une classe au projet WebPart et spécifier qu'elle hérite d'une des classes WebPart de recherche fédérée. Ci-dessous figurent des exemples de déclaration de classes pour le composant WebPart personnalisé.

Listing 1. Héritage de la classe SearchResultsBaseWebPart

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

Listing 2. Héritage de la classe FederatedResultsWebPart

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

Listing 3. Héritage de la classe TopFederatedResultsWebPart

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

Implémentation de la classe de composant WebPart personnalisé

Pour implémenter le composant WebPart personnalisé de façon à prendre en charge des scénarios d'authentification par utilisateur lorsque l'emplacement fédéré se trouve sur un serveur distant, exécutez les trois opérations suivantes :

  1. Demandez les informations d'identification à l'utilisateur.

  2. Créez un objet ICredentials avec les informations d'identification de l'utilisateur.

  3. Passez l'objet ICredentials à la demande de recherche à l'emplacement fédéré.

Aspects relatifs à la sécurité

Nous recommandons fortement d'utiliser une connexion sécurisée lors de la collecte des informations d'identification des utilisateurs.

Demande des informations d'identification à l'utilisateur.

Votre interface utilisateur personnalisée de la solution WebPart doit procurer à l'utilisateur un moyen d'entrer ses informations d'identification. Vous exposez cette interface utilisateur uniquement si le composant WebPart ne possède pas les informations d'identification de l'utilisateur.

Vous pouvez remplacer une des méthodes suivantes pour afficher l'interface utilisateur pour les informations d'identification :

  • Render

  • CreateChildControls

Dans chaque méthode, vous devez inclure du code pour vérifier si vous avez déjà les informations d'identification de l'utilisateur ; si c'est le cas, ne restituez pas l'interface utilisateur des informations d'identification. Vous devez également appeler base.Render() ou base.CreateChildControls() après votre code pour afficher cette interface utilisateur.

Notes

Après avoir ajouté votre composant WebPart personnalisé à une page de résultats de recherche, vous devez configurer dans le volet d'outils un emplacement fédéré pour le composant WebPart avant que celui-ci ne s'affiche dans la page.

Création de l'objet ICredentials

Vous créez un objet ICredentials pour passer les informations d'identification que l'utilisateur a entrées.

Si vous créez un composant WebPart pour cette solution (de façon à afficher l'interface utilisateur des informations d'identification dans le même composant WebPart que les résultats de la recherche fédérée personnalisée), vous pouvez remplacer la méthode OnLoad du composant WebPart pour capturer les informations d'identification. Vous pouvez vérifier si la page a été publiée en retour pour déterminer si vous devez rechercher les informations d'identification entrées par l'utilisateur (voir l'exemple de code suivant).

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

Si l'interface utilisateur des informations d'identification est contenue dans un composant WebPart différent des résultats de la recherche fédérée, vous devez remplacer la méthode Init à la place.

Passage des informations d'identification à l'emplacement fédéré

Après avoir obtenu les informations d'identification de l'utilisateur, vous pouvez les passer d'abord à la demande de recherche, puis à l'emplacement fédéré. Pour cela, définissez la propriété UserCredentials de l'objet source des données associé au composant WebPart.

Chaque classe de composant WebPart de recherche fédérée est associée à une classe de source de données (voir le tableau suivant).

Classe de composant WebPart Classe de source de données

SearchResultsBaseWebPart

SearchResultsBaseDatasource

FederatedResultsWebPart

FederatedResultsDatasource

TopFederatedResultsWebPart

TopFederatedResultsDatasource

Pour configurer les propriétés de la source de données de l'emplacement fédéré du composant WebPart, vous devez remplacer la méthode ConfigureDataSourceProperties et appeler la méthode de la source de données UserCredentials.Add (voir l'exemple suivant).

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

Voir aussi

Référence

WebControls
SearchResultsBaseWebPart
SearchResultsBaseDatasource
SearchResultsBaseDatasourceView
FederatedResultsWebPart
FederatedResultsDatasource
FederatedResultsDatasourceView
TopFederatedResultsWebPart
TopFederatedResultsDatasource

Autres ressources

Vue d'ensemble de la recherche fédérée
Exemple de composant WebPart pour la recherche fédérée personnalisé