Étape 1 : créer le découpage de sécurité personnalisé
Cette procédure pas à pas indique comment créer, déployer et inscrire un découpage de sécurité personnalisé pour Recherche de contenu d'entreprise dans Microsoft Office SharePoint Server 2007 à l'aide de Microsoft Visual Studio 2005.
L'étape 1 décrit la création du découpage de sécurité personnalisé et comprend les tâches suivantes :
Configuration du projet de découpage de sécurité personnalisé
Codage du découpage de sécurité personnalisé
Compilation du projet de découpage de sécurité personnalisé avec un nom fort
Configuration du projet de découpage de sécurité personnalisé
Créer le projet pour le découpage de sécurité personnalisé
Dans Visual Studio, dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
Dans Types de projets, sous C#, sélectionnez Windows.
Sous Modèles, sélectionnez Bibliothèque de classes. Dans le champ Nom, tapez CustomSecurityTrimmerSample, puis cliquez sur OK.
Vous devez ensuite ajouter les références requises à votre projet de composant WebPart.
Ajouter des références au projet CustomSecurityTrimmerSample
Dans le menu Projet, cliquez sur Ajouter une référence.
Sous l'onglet .NET, sélectionnez la référence suivante, puis cliquez sur OK :
- Microsoft.Office.Server.Search
Notes
Si le site SharePoint est configuré pour utiliser l'authentification par formulaire, pour accéder au nom d'utilisateur vous devez utiliser la classe HttpContext, vous devez donc également ajouter une référence ici à system.web.
Avant d'ajouter du code pour le découpage de sécurité, remplacez le fichier de classe par défaut par un nouveau fichier de classe.
Créer le fichier de classe pour le découpage de sécurité
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Class1.cs, puis cliquez sur Supprimer pour supprimer la classe par défaut créée avec le projet.
Dans le menu Projet, cliquez sur Ajouter un nouvel élément.
Dans la boîte de dialogue Ajouter un nouvel élément, cliquez surClasse, tapez CustomSecurityTrimmer.cs, puis cliquez sur Ajouter.
Écriture du code du découpage de sécurité personnalisé
Modifier le code par défaut dans CustomSecurityTrimmer
Ajoutez les instructions using suivantes dans la partie supérieure du code avec les autres directives d'espace de noms.
using System.Collections; using System.Collections.Specialized; using System.Security.Principal; using Microsoft.Office.Server.Search.Query; using Microsoft.Office.Server.Search.Administration;
Spécifiez que la classe CustomSecurityTrimmer implémente l'interface ISecurityTrimmer dans la déclaration de classe, comme suit.
public class CustomSecurityTrimmer : ISecurityTrimmer
Vous êtes maintenant prêt à écrire le code pour implémenter les méthodes d'interface ISecurityTrimmer.
Implémenter les méthodes d'interface ISecurityTrimmer
Ajoutez le code suivant pour la déclaration de méthode Initialize.
public void Initialize(NameValueCollection trimmerProps, SearchContext searchCxt) { }
La version de base de cet exemple n'inclut pas de code dans la méthode Initialize. La méthode Initialize dans l'Étape 3 (facultative) : spécifier une limite configurable sur le nombre d'URL d'analyse contrôlées contient un exemple d'implémentation.
Pour plus d'informations sur l'implémentation de la méthode Initialize, voir Présentation de la suppression de la sécurité personnalisée pour les résultats de la Recherche de contenu d'entreprise.
Ajoutez le code suivant pour la déclaration de méthode CheckAccess.
public BitArray CheckAccess(IList<String> crawlURLs,IDictionary<String,Object> sessionProperties) { //CheckAccess method implementation, see steps 3-5. }
Pour la première partie de l'implémentation de la méthode CheckAccess, déclarez et initialisez une variable BitArray pour stocker les résultats de la vérification d'accès pour chaque URL dans la collection crawlURLs, puis extrayez le nom de l'utilisateur qui a envoyé la requête, comme suit.
BitArray retArray = new BitArray(crawlURLs.Count); //For Windows authentication, uncomment the next line: //string strUser = WindowsIdentity.GetCurrent().Name; //For Forms authentication, uncomment the next line: //string strUser = HttpContext.Current.User.Identity.Name;
Exécutez une boucle sur chaque URL d'analyse dans la collection, puis effectuez la vérification d'accès pour déterminer si l'utilisateur qui a envoyé la requête peut accéder à l'élément de contenu associé à l'URL d'analyse.
Si l'utilisateur a accès à l'élément de contenu, définissez la valeur de l'élément BitArray de cet index, retArray[x], à true; sinon, affectez-lui la valeur false, comme suit.
for (int x = 0; x < crawlURLs.Count; x++) { /* To fully implement the security trimmer, add code to perform the security check and determine if strUser can access crawlURLs[x]. If strUser can access crawlURL[x], then: */ retArray[x] = true; //If not: retArray[x] = false; }
Définissez la valeur de retour de la méthode CheckAccess à retArray, comme suit.
return retArray;
Compilation du projet de découpage de sécurité personnalisé avec un nom fort
Compiler le projet de découpage de sécurité personnalisé avec un nom fort
Dans Visual Studio 2005, dans le menu Projet, cliquez sur Propriétés CustomSecurityTrimmerSample.
Dans Signature, sélectionnez Signer l'assembly.
Dans Choisir un fichier de clé de nom fort, sélectionnez Nouveau. Dans Nom du fichier de clé, tapez un nom pour votre fichier de clé et puis cliquez sur OK.
Notes
Si vous avez un fichier de clé existant à utiliser, sélectionnez Parcourir au lieu de Nouveau pour cette étape et recherchez le fichier existant.
Dans le menu Construire, cliquez sur Générer la solution.
Étapes suivantes
Dans Étape 2 : déployer et inscrire le filtre de sécurité personnalisé, vous allez déployer et inscrire le découpage de sécurité personnalisé.
Étape 3 (facultative) : spécifier une limite configurable sur le nombre d'URL d'analyse contrôlées contient une version modifiée de la classe de découpage de sécurité personnalisé qui vous montre comment implémenter une limite configurable quant au nombre d'éléments vérifiés par le découpage de sécurité personnalisé.
Exemple
Voici l'exemple de code complet pour la classe CustomSecurityTrimmerSample, décrite dans cette étape.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server.Search.Query;
using Microsoft.Office.Server.Search.Administration;
//For Windows Authentication
using System.Security.Principal;
//For Forms Authenticaion
using System.Web;
using System.Collections.Specialized;
using System.Collections;
namespace CustomSecurityTrimmerSample
{
class CustomSecurityTrimmer : ISecurityTrimmer
{
public void Initialize(NameValueCollection trimmerProps, SearchContext searchCxt)
{
}
public BitArray CheckAccess(IList<String> crawlURLs, IDictionary<String, Object> sessionProperties)
{
BitArray retArray = new BitArray(crawlURLs.Count);
//For Windows authentication, uncomment the next line:
//string strUser = WindowsIdentity.GetCurrent().Name;
//For Forms authentication, uncomment the next line:
//string strUser = HttpContext.Current.User.Identity.Name;
for (int x = 0; x < crawlURLs.Count; x++)
{
/*
To fully implement the security trimmer,
add code to perform the security check
and determine if strUser can access crawlURLs[x].
If strUser can access crawlURL[x], then:
*/
retArray[x] = true;
//If not:
retArray[x] = false;
}
return retArray;
}
}
}
Voir aussi
Référence
Microsoft.Office.Server.Search.Query.ISecurityTrimmer
Autres ressources
Présentation de la suppression de la sécurité personnalisée pour les résultats de la Recherche de contenu d'entreprise
Procédure pas à pas : utilisation d'un découpage de sécurité par défaut pour les résultats de recherche
Étape 2 : déployer et inscrire le filtre de sécurité personnalisé
Étape 3 (facultative) : spécifier une limite configurable sur le nombre d'URL d'analyse contrôlées