Optimizador de seguridad del Catálogo de datos profesionales
Enterprise Search de Microsoft Office SharePoint Server 2007 en Microsoft Office SharePoint Server 2007 realiza la optimización de seguridad de tiempo de consulta de resultados de búsqueda mediante la información de seguridad obtenida en tiempo de rastreo. Sin embargo, puede haber escenarios donde esto puede no ser suficiente como, por ejemplo, cuando las aplicaciones back-end no pueden proporcionar información de seguridad en tiempo de rastreo o cuando se necesita información de actualización de seguridad y no resulta práctico rastrear cada vez. Para solucionar este escenario, el motor de procesamiento de consultas de Enterprise Search proporciona un marco de trabajo para conectar módulos de optimización de seguridad de tiempo consulta dinámica, donde se puede aplicar una optimización de seguridad para los resultados específicos de una consulta de usuario único antes de mostrarlos en los resultados de la búsqueda.
El Catálogo de datos profesionales implementa la interfaz CheckAccess para proporcionar compatibilidad integrada para la optimización de seguridad de instancia por entidad o de seguridad de nivel de instancia de entidad.
El Optimizador de seguridad del Catálogo de datos profesionales permite optimizar la seguridad personalizada de instancias de entidad (documentos de búsqueda) indizadas por el Catálogo de datos profesionales antes de que se devuelvan al usuario. Se optimiza el conjunto de resultados (que contiene las instancias de entidad) en tiempo de ejecución en función de los derechos de usuario actuales sobre los datos de servidor, con la lógica de la aplicación back-end para determinar los derechos del usuario. Se supone que la aplicación back-end real proporcionará un método público para comprobar los permisos del usuario actual para una o más instancias de entidad. Los parámetros de entrada del método deben aceptar los identificadores de los objetos EntityInstance que se van a comprobar y el parámetro de salida debe devolver los derechos de acceso para el usuario actual como una matriz de enteros long correspondiente (o algún valor que se puede convertir en un entero long).
Cuando este tipo de API está disponible, los autores de los metadatos del Catálogo de datos profesionales pueden definir un MethodInstanceType denominado AccessChecker en el archivo de definición de la aplicación y asignarlo a la API back-end de la misma manera que para Finder, SpecificFinder y así sucesivamente. Cuando haya una instancia de método AccessChecker disponible, el Optimizador de seguridad del Catálogo de datos profesionales podrá usarla para determinar los derechos del usuario mediante el método CheckAccess.
El Optimizador de seguridad del Catálogo de datos profesionales ejecuta el método CheckAccess cada vez que el motor de consultas devuelve resultados que coinciden con la regla de rastreo asociada al Optimizador de seguridad del Catálogo de datos profesionales. Cuando se llama al método Entity.CheckAccess, el Catálogo de datos profesionales ejecuta la API back-end descrita por la instancia de método AccessChecker registrada para esa entidad. La API back-end devuelve los derechos que posee el usuario actual sobre la instancia o instancias de entidad. Esto se vuelve a transmitir al método Entity.CheckAccess y, por último, al Optimizador de seguridad, que usa esta información para optimizar los resultados antes de mostrarlos al usuario.
Importante
Para obtener un tutorial completo, consulte Tutorial: uso del Optimizador de seguridad del Catálogo de datos profesionales para restringir los resultados de la búsqueda.
Detalles internos
El Optimizador de seguridad del Catálogo de datos profesionales asigna el método Microsoft.Office.Server.Search.Query.ISecurityTrimmer.CheckAccess(System.Collections.Generic.IList{System.String},System.Collections.Generic.IDictionary{System.String,System.Object}) al método Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.CheckAccess(System.Object[],Microsoft.Office.Server.ApplicationRegistry.MetadataModel.LobSystemInstance) mediante el análisis de las direcciones URL proporcionadas por el procesador de consultas al método Entity.CheckAccess tras determinar el objeto LobSystem y las entidades de donde procede cada dirección URL.
Sin embargo, dado que ISecurityTrimmer.CheckAccess debe devolver una matriz de valores "Sí" o "No" y que el método Entity.CheckAccess devuelve una matriz de vectores de derechos, el Optimizador de seguridad del Catálogo de datos profesionales ofrece un método para convertir un vector de derechos en un valor Sí o No mediante la lectura de una propiedad especial en el objeto de entidad llamado DisplaySearchResultRightsMaskPropertyName.
Por último, el Optimizador de seguridad del Catálogo de datos profesionales intenta limitar el número de comprobaciones de acceso que realiza para una única llamada al modelo de objetos de consultas de búsqueda. Por ejemplo, si el índice contiene un millón de documentos y hay una sola palabra clave común para todos los documentos, y a continuación, el usuario ejecuta una consulta y el usuario tiene acceso únicamente al documento número un millón y no al resto, el procesador de consultas seguirá llamando a Entity.CheckAccess hasta que se prueben todos los documentos. Esto puede llevar mucho tiempo. Por ello, el Optimizador de seguridad del Catálogo de datos profesionales realiza el seguimiento del número de documentos que se consultan mediante un límite configurable personalizado (el valor predeterminado es 100). Si se supera el límite, se produce una excepción que se muestra como un mensaje al usuario final que solicita que se limite el ámbito de la consulta.
Vea también
Otros recursos
Tutorial: uso del Optimizador de seguridad del Catálogo de datos profesionales para restringir los resultados de la búsqueda
Ejemplos de AccessChecker