Paso 1: Crear el optimizador de seguridad personalizado
En este tutorial se describe cómo crear, implementar y registrar un optimizador de seguridad personalizado para Enterprise Search de Microsoft Office SharePoint Server 2007 mediante Microsoft Visual Studio 2005.
El paso 1 describe cómo crear el optimizador de seguridad personalizado e incluye las siguientes tareas:
Configuración del proyecto del optimizador de seguridad personalizado
Codificación del optimizador de seguridad personalizado
Compilación del proyecto del optimizador de seguridad personalizado con un nombre seguro
Configuración del proyecto del optimizador de seguridad personalizado
Para crear el proyecto para el optimizador de seguridad personalizado
En el menú Archivo de Visual Studio, elija Nuevo y, a continuación, haga clic en Proyecto.
En Tipos de proyecto, en C#, seleccione Windows.
En Plantillas,seleccione Biblioteca de clases. En el campo Nombre, escriba CustomSecurityTrimmerSample y, a continuación, haga clic en Aceptar.
A continuación, debe agregar las referencias necesarias al proyecto de elemento web.
Para agregar referencias al proyecto CustomSecurityTrimmerSample
En el menú Proyecto, haga clic en Agregar referencia.
En la ficha .NET, seleccione la siguiente referencia y, a continuación, haga clic en Aceptar:
- Microsoft.Office.Server.Search
Nota
Si el sitio de SharePoint está configurado para usar autenticación de formularios, para tener acceso al nombre de usuario debe usar la clase HttpContext, por lo que también debe agregar una referencia aquí a system.web .
Antes de agregar código para el optimizador de seguridad, reemplace el archivo de clase predeterminada con un nuevo archivo de clase.
Para crear el archivo de clase para el optimizador de seguridad
En el Explorador de soluciones, haga clic con el botón secundario en Class1.cs y, a continuación, elija Eliminar para quitar la clase predeterminada creada con el proyecto.
En el menú Proyecto, haga clic en Agregar nuevo elemento.
En el cuadro de diálogo Agregar nuevo elemento, haga clic en Clase, escriba CustomSecurityTrimmer.cs y, a continuación, haga clic en Agregar.
Escritura del código del optimizador de seguridad personalizado
Para modificar el código predeterminado en CustomSecurityTrimmer
Agregue las siguientes instrucciones using cerca de la parte superior del código con las otras directivas de espacio de nombres.
using System.Collections; using System.Collections.Specialized; using System.Security.Principal; using Microsoft.Office.Server.Search.Query; using Microsoft.Office.Server.Search.Administration;
Especifique que la clase CustomSecurityTrimmer implementa la interfaz ISecurityTrimmer en la declaración de clase, de la siguiente manera.
public class CustomSecurityTrimmer : ISecurityTrimmer
Ahora está listo para escribir el código para implementar los métodos de la interfaz ISecurityTrimmer.
Para implementar los métodos de la interfaz ISecurityTrimmer
Agregue el siguiente código para la declaración del método Initialize.
public void Initialize(NameValueCollection trimmerProps, SearchContext searchCxt) { }
La versión básica de este ejemplo no incluye ningún código en el método Initialize. El método Initialize en el Paso 3 (opcional): Especificar un límite configurable del número de direcciones URL de rastreo comprobadas contiene una implementación de ejemplo.
Para obtener más información acerca de cómo implementar el método Initialize, consulte Información general del Optimizador de seguridad personalizado para los resultados del motor de búsqueda Enterprise Search.
Agregue el siguiente código para la declaración del método CheckAccess.
public BitArray CheckAccess(IList<String> crawlURLs,IDictionary<String,Object> sessionProperties) { //CheckAccess method implementation, see steps 3-5. }
Para la primera parte de la implementación del método CheckAccess, declare e inicialice una variable BitArray para almacenar los resultados de la comprobación de acceso para cada dirección URL de la colección crawlURLs y recupere el nombre de usuario para el usuario que envió la consulta, como sigue.
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;
Recorra cada dirección URL de rastreo de la colección y realice la comprobación de acceso para determinar si el usuario que envió la consulta puede tener acceso al elemento de contenido asociado a la dirección URL de rastreo.
Si el usuario tiene acceso al elemento de contenido, establezca el valor del elemento BitArray en ese índice, retArray[x], en true; de lo contrario, establézcalo en false, de la siguiente manera.
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; }
Establezca el valor devuelto del método CheckAccess en retArray, de la siguiente manera.
return retArray;
Compilación del proyecto del optimizador de seguridad personalizado con un nombre seguro
Para compilar el proyecto del optimizador de seguridad personalizado con un nombre seguro
En Visual Studio 2005, en el menú Proyecto, haga clic en Propiedades de CustomSecurityTrimmerSample.
En Firma, seleccione Firmar el ensamblado.
En Seleccione un archivo de clave de nombre seguro, elija Nuevo. En Nombre del archivo de clave, escriba un nombre para el archivo de clave y, a continuación, haga clic en Aceptar.
Nota
Si tiene un archivo de clave existente para usar, seleccione Examinar en lugar de Nuevo para este paso y busque el archivo existente.
En el menú Generar, haga clic en Generar solución.
Pasos siguientes
En el Paso 2: implementación y registro del optimizador de seguridad personalizado, implementará y registrará el optimizador de seguridad personalizado.
El Paso 3 (opcional): Especificar un límite configurable del número de direcciones URL de rastreo comprobadas contiene una versión modificada de la clase del optimizador de seguridad personalizado que muestra cómo implementar un límite configurable en el número de elementos activados por el optimizador de seguridad personalizado.
Ejemplo
A continuación, se muestra el código de ejemplo completo para la clase CustomSecurityTrimmerSample que se describe en este paso.
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;
}
}
}
Vea también
Referencia
Microsoft.Office.Server.Search.Query.ISecurityTrimmer
Otros recursos
Información general del Optimizador de seguridad personalizado para los resultados del motor de búsqueda Enterprise Search
Tutorial: Uso de un optimizador de seguridad personalizado para los resultados de la búsqueda
Paso 2: implementación y registro del optimizador de seguridad personalizado
Paso 3 (opcional): Especificar un límite configurable del número de direcciones URL de rastreo comprobadas