Специальная фильтрация по ролям безопасности, настраиваемая для поиска в SharePoint
Узнайте о двух типов комбинаций выборочные обрезки интерфейсов, ISecurityTrimmerPre и ISecurityTrimmerPost и действия, которые необходимо выполнить, чтобы создать пользовательский безопасности устройство обрезки. Во время запроса поиск в SharePoint выполняет проверку безопасности результатов поиска, основанных на удостоверении пользователя, подающего запрос, с помощью сведений о безопасности, полученных из компонента обхода.
Вам может понадобиться определенных сценариях, тем не менее, в которых результаты фильтрации по ролям встроенные средства безопасности не достаточно для конкретной ситуации. В таких случаях необходимо реализовать фильтрации по ролям безопасности пользовательский. Поиск в SharePoint обеспечивает поддержку настраиваемой отделки безопасности с помощью интерфейса ISecurityTrimmerPre, интерфейса ISecurityTrimmerPost и интерфейса ISecurityTrimmer2 (обескровлен) в Microsoft.Office. Пространство имен Server.Search.Query.
Настраиваемые предварительные триммеры не поддерживают Windows siD в acLs, только утверждения. Если любой из идентификатор заявляют, что типы возвращаемых настраиваемых старые устройство обрезки, полученный доступом в индексе кодировке утверждения, не как ИД безопасности. Поэтому они не соответствуют удостоверений пользователей Windows, основанные на ИД безопасности.
Реализация интерфейсов для фильтрации по ролям безопасности
Интерфейс ISecurityTrimmerPre выполняет вычисление предварительная фильтрацию по ролям или предварительного запроса, где переписывать поисковый запрос для добавления сведений о безопасности перед сопоставление поисковый запрос в поисковый индекс. Интерфейс ISecurityTrimmerPost выполняет вычисление после обрезки или после запроса, где удаляются результатов поиска, прежде чем они возвращаются пользователю.
Рекомендуется использовать предварительная фильтрацию по ролям для повышения производительности и общие правильность; Предварительная фильтрацию по ролям предотвращает утечки информации для уточнения данных и нажатия количество экземпляров. После trimmers можно использовать в случаях, где фильтрации по ролям безопасности непредусмотренным точно с помощью фильтров запроса; Например при наличии в зависимости от часового пользователя выдачи запроса, таких как только официальный рабочее время документы нужно отфильтровать нет на месте.
Реализация интерфейса ISecurityTrimmerPreСоздание настраиваемых безопасности старые устройство обрезки для результатов поиска, необходимо создать компонентом, который интерфейс ISecurityTrimmerPre.
Интерфейс ISecurityTrimmerPre содержит два метода, которые необходимо реализовать: Initialize(NameValueCollection, SearchServiceApplication) и AddAccess(Boolean, Claims) .
Метод InitializeМетод Initialize выполняется при устройство обрезки старые безопасности загружается в рабочий процесс, пока не будет повторно рабочий процесс не выполняет еще раз. Два параметра передаются в метод:
staticProperties: NameValueCollection объект, содержащий конфигурации свойства, заданные для устройство обрезки безопасности при регистрации приложения службы поиска.
searchApplication: SearchServiceApplication объект, который представляет приложения службы поиска.
Метод AddAccessМетод AddAccess выполняется на устройство до обрезки, для каждого запроса входящих перед вычислением запрос один раз.
Два параметра передаются в этот метод:
sessionProperties: [T:System.Collections.Generic.IDictionary<String,Object>] объект, который содержит свойства запроса.
userIdentity: IIdentity объект, который содержит удостоверение пользователя.
Реализация интерфейса ISecurityTrimmerPostЧтобы создать пользовательский безопасности после устройство обрезки для результатов поиска, необходимо создать компонентом, который интерфейс ISecurityTrimmerPost.
Интерфейс ISecurityTrimmerPost содержит два метода, которые необходимо реализовать: Initialize(NameValueCollection, SearchServiceApplication) и CheckAccess(IList, IList, IDictionary<String, Object>, IIdentity).
Метод InitializeМетод Initialize выполняется при устройство обрезки безопасности загружается в рабочий процесс, пока не будет повторно рабочий процесс не выполняет еще раз. Два параметра передаются в метод: и
staticProperties: NameValueCollection объект, содержащий свойства конфигурации, заданному для устройство обрезки безопасности при регистрации приложения службы поиска.
searchApplication: SearchServiceApplication объект, который представляет приложения службы поиска.
Метод CheckAccessМетод CheckAccess выполняется один раз в устройство после обрезки, для каждого запроса результирующий набор, после оценки запроса.
Четыре параметры передаются в этот метод:
documentUrls: IList<T> объект, который содержит URL-адреса для каждого элемента содержимого в результатах поиска, которые соответствуют правило обхода.
documentAcls: IList<T> объект, содержащий элемент ACL для каждого элемента содержимого, доступ которых будет определяться реализацией обрезки безопасности.
sessionProperties: объект IDictionary, <TKey, TValue> содержащий временный пакет свойств.
userIdentity: объекта IIdentity , из которого исполняющих объектов можно получить учетные данные пользователя.
Метод CheckAccess возвращает BitArray объект, который представляет массив значений true или false, один для каждого URL-адреса элемента содержимого в IList объект, который был передан в качестве первого параметра метода. Компонент обработки запросов использует эти значения для выполнения после фильтрации по ролям безопасности результатов. Если значение массива для определенного элемента контента true, элемент включается в возвращаемые результаты; Если значение массива false, удалить элемент.
При реализации метода CheckAccess можно использовать двумя элементам данных для каждого элемента определить, следует ли возвращать true или false для элемента: удостоверение пользователя, отправившего запрос и URL-адрес элемента содержимого. Кроме того можно также передать информацию ACL настраиваемый документ от соединителя метода CheckAccess.
Получение удостоверение пользователя для вашей безопасности устройство обрезкиУдостоверение пользователя можно извлекать с текущего участника потока, как показано в следующем примере.
Также необходимо включить следующую директиву пространства имен.
Идентификатор пользователя также можно получить из параметра passedUserIdentity метода CheckAccess.
Передача ACL документа из соединительную линию в вашей trimmers безопасностиСоединитектор, как следует из названия, является мостом связи между SharePoint и внешней системой, в которую размещены внешние данные. При работе с помощью пользовательских соединителей можно передать сведений о документе ACL непосредственно после устройство обрезки с помощью docaclmeta свойства документа. Как настроенные соединители и после trimmers имеют одинаковый формат и интерпретации поля, вы можете использовать для передачи пользовательских данных.
Строки, хранящиеся в docaclmeta соединителем будет контактной в параметре documentAcls при вызове метод CheckAccess устройство обрезки настраиваемые безопасности. Обычный документ ACL в свойстве docacl обрабатываются по ролям безопасности основные и не отображаются на устройство обрезки настраиваемые безопасности. Аналогичным образом свойство docaclmeta не влияет на фильтрации по ролям безопасности основные.
После trimmers и их влияние на количество уточнения для trimmers безопасностиПри работе с после trimmers важно Обратите внимание на то, что имеется два типа таблицы результатов: RelevantResults и RefinementResults. После trimmers применяются только к найденных результатов в RelevantResults. Таким образом возможно, там будут уточнения, связанные с ним в текстах усеченных обращений и RefinementResults count может быть больше или равно RelevantResults. Можно решить такое поведение двумя способами:
Исключите конфиденциальные переработчики из панели уточнений в веб-части по умолчанию, чтобы утечка информации через НПЗ не произошла.
Используйте настраиваемую веб-часть для отображения результатов или уточнений при использовании после триммеров, чтобы уточненияResults могли быть элегантно скрыты в тех случаях, когда значение RefinementResults превышает значение RelevantResults.
Получение свойств отдельной конфигурации для вашей безопасности устройство обрезкиМожно получить доступ к отдельной конфигурации свойства, используя имя свойства, который был указан при регистрации устройство обрезки после безопасности. Например следующий код возвращает значение для настройки свойство с именем CheckLimit.
Развертывание компонента настраиваемого триммера безопасности
После создания устройство обрезки выборочные ее необходимо развернуть в глобальный кэш на любом сервере роль запроса. Шаг 2 в Способ: использование пользовательского триммера безопасности для результатов поиска SharePoint Server описывает процесс развертывания устройство обрезки выборочные глобальный кэш.
Регистрация пользовательского триммера безопасности
После trimmers для регистрации обрезки выборочные необходимо связать с определенного приложения службы поиска и правило обхода контента; для предварительного trimmers это не является обязательным.
Используйте командлет SPEnterpriseSearchSecurityTrimmer Командная консоль SharePoint зарегистрировать устройство выборочные обрезки.
В следующей таблице описаны параметры, которые использует командлет.
Таблица 1. Параметры командлета SPEnterpriseSearchSecurityTrimmer
Пример основные команды для регистрации устройство выборочные обрезки и пример, задающее свойства конфигурации, читайте в статье Способ: использование пользовательского триммера безопасности для результатов поиска SharePoint Server.