Специальная фильтрация по ролям безопасности, настраиваемая для поиска в SharePoint

Узнайте о двух типов комбинаций выборочные обрезки интерфейсов, ISecurityTrimmerPre и ISecurityTrimmerPostи действия, которые необходимо выполнить, чтобы создать пользовательский безопасности устройство обрезки. Во время запроса поиск в SharePoint выполняет обрезку результатов поиска, основанных на идентификаторе пользователя, отправляющего запрос, используя сведения о безопасности, полученные из компонента обхода контента.

Вам может понадобиться определенных сценариях, тем не менее, в которых результаты фильтрации по ролям встроенные средства безопасности не достаточно для конкретной ситуации. В таких случаях необходимо реализовать фильтрации по ролям безопасности пользовательский. Поиск в SharePoint обеспечивает поддержку пользовательской обрезки безопасности с помощью интерфейса ISecurityTrimmerPre , интерфейса ISecurityTrimmerPost и интерфейса ISecurityTrimmer2 (не рекомендуется) в пространстве имен Microsoft.Office.Server.Search.Query .

Примечание.

Пользовательские предварительные обрезки не поддерживают идентификаторы безопасности Windows в списках управления доступом( только утверждения). Если любой из идентификатор заявляют, что типы возвращаемых настраиваемых старые устройство обрезки, полученный доступом в индексе кодировке утверждения, не как ИД безопасности. Поэтому они не соответствуют удостоверений пользователей Windows, основанные на ИД безопасности.

Реализация интерфейсов для фильтрации по ролям безопасности

Интерфейс ISecurityTrimmerPre выполняет вычисление предварительная фильтрацию по ролям или предварительного запроса, где переписывать поисковый запрос для добавления сведений о безопасности перед сопоставление поисковый запрос в поисковый индекс. Интерфейс ISecurityTrimmerPost выполняет вычисление после обрезки или после запроса, где удаляются результатов поиска, прежде чем они возвращаются пользователю.

Рекомендуется использовать предварительная фильтрацию по ролям для повышения производительности и общие правильность; Предварительная фильтрацию по ролям предотвращает утечки информации для уточнения данных и нажатия количество экземпляров. После trimmers можно использовать в случаях, где фильтрации по ролям безопасности непредусмотренным точно с помощью фильтров запроса; Например при наличии в зависимости от часового пользователя выдачи запроса, таких как только официальный рабочее время документы нужно отфильтровать нет на месте.

Реализация интерфейса ISecurityTrimmerPre

Создание настраиваемых безопасности старые устройство обрезки для результатов поиска, необходимо создать компонентом, который интерфейс ISecurityTrimmerPre.

Интерфейс ISecurityTrimmerPre содержит два метода, которые необходимо реализовать: Initialize(NameValueCollection, SearchServiceApplication) и AddAccess(Boolean, Claims) .

Метод Initialize

Метод Initialize выполняется при устройство обрезки старые безопасности загружается в рабочий процесс, пока не будет повторно рабочий процесс не выполняет еще раз. Два параметра передаются в метод:

  • staticProperties: объект NameValueCollection, содержащий свойства конфигурации, указанные для триммера безопасности при регистрации в приложении служба .

  • searchApplication: объект SearchServiceApplication, представляющий служба приложение.

Метод AddAccess

Метод AddAccess выполняется на устройство до обрезки, для каждого запроса входящих перед вычислением запрос один раз.

Два параметра передаются в этот метод:

  • sessionProperties: объект [System.Collections.Generic.IDictionary<String,Object>] , содержащий свойства запроса.

  • userIdentity: объект IIdentity , содержащий удостоверение пользователя.

Реализация интерфейса ISecurityTrimmerPost

Чтобы создать пользовательский безопасности после устройство обрезки для результатов поиска, необходимо создать компонентом, который интерфейс ISecurityTrimmerPost.

Интерфейс ISecurityTrimmerPost содержит два метода, которые необходимо реализовать: Initialize(NameValueCollection, SearchServiceApplication) и CheckAccess(IList<String>, IList<String>, 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.

Получение удостоверение пользователя для вашей безопасности устройство обрезки

Удостоверение пользователя можно извлекать с текущего участника потока, как показано в следующем примере.


IIdentity userIdentity = System.Threading.Thread.CurrentPrincipal.Identity;

Также необходимо включить следующую директиву пространства имен.

using System.Security.Principal;

Идентификатор пользователя также можно получить из параметра passedUserIdentity метода CheckAccess.

Передача ACL документа из соединительную линию в вашей trimmers безопасности

Соединитель, как следует из названия, — это мост связи между SharePoint и внешней системой, в котором размещаются внешние данные. При работе с помощью пользовательских соединителей можно передать сведений о документе ACL непосредственно после устройство обрезки с помощью docaclmeta свойства документа. Как настроенные соединители и после trimmers имеют одинаковый формат и интерпретации поля, вы можете использовать для передачи пользовательских данных.

Строки, хранящиеся в docaclmeta соединителем будет контактной в параметре documentAcls при вызове метод CheckAccess устройство обрезки настраиваемые безопасности. Обычный документ ACL в свойстве docacl обрабатываются по ролям безопасности основные и не отображаются на устройство обрезки настраиваемые безопасности. Аналогичным образом свойство docaclmeta не влияет на фильтрации по ролям безопасности основные.

После trimmers и их влияние на количество уточнения для trimmers безопасности

При работе с после trimmers важно Обратите внимание на то, что имеется два типа таблицы результатов: RelevantResults и RefinementResults. После trimmers применяются только к найденных результатов в RelevantResults. Таким образом возможно, там будут уточнения, связанные с ним в текстах усеченных обращений и RefinementResults count может быть больше или равно RelevantResults. Можно решить такое поведение двумя способами:

  • Исключите конфиденциальные уточнения из панели уточнения в веб-части по умолчанию, чтобы информация не просочилась через уточнения.

  • Используйте пользовательскую веб-часть для отображения результатов или уточнений при использовании пост-обрезки, чтобы refinementResults могли быть элегантно скрыты в случаях, когда число RefinementResults превышает число РелевантныхРесультов .

Получение свойств отдельной конфигурации для вашей безопасности устройство обрезки

Можно получить доступ к отдельной конфигурации свойства, используя имя свойства, который был указан при регистрации устройство обрезки после безопасности. Например следующий код возвращает значение для настройки свойство с именем CheckLimit.

public void Initialize(NameValueCollection staticProperties, SearchServiceApplication searchApplication)
{
    if (staticProperties["CheckLimitProperty"] != null)
    {
         intCheckLimit = Convert.ToInt32(staticProperties["CheckLimitProperty"]);
    }
}

Развертывание компонента настраиваемого триммера безопасности

После создания устройство обрезки выборочные ее необходимо развернуть в глобальный кэш на любом сервере роль запроса. Шаг 2 в разделе Практическое руководство. Использование пользовательского триммера безопасности для результатов поиска SharePoint Server описывает процесс развертывания пользовательского триммера безопасности в глобальном кэше сборок.

Регистрация пользовательского триммера безопасности

После trimmers для регистрации обрезки выборочные необходимо связать с определенного приложения службы поиска и правило обхода контента; для предварительного trimmers это не является обязательным.

Используйте командлет SPEnterpriseSearchSecurityTrimmerКомандная консоль SharePoint зарегистрировать устройство выборочные обрезки.

В следующей таблице описаны параметры, которые использует командлет.

Таблица 1. Параметры командлета SPEnterpriseSearchSecurityTrimmer

Параметр Описание
SearchApplication
Обязательно. Имя приложения службы поиска, например «приложения службы поиска».
Typename
Обязательный атрибут. Строгое имя сборки пользовательских триммеров безопасности.
RulePath
Обязательно для после trimmers; необязательно для предварительного trimmers. Правило обхода для триммера безопасности.
Примечание. Рекомендуется использовать одно правило обхода контента для каждого источника контента.
id
Обязательно. Идентификатор обрезки безопасности. Это значение является уникальным; Если триммер безопасности зарегистрирован с идентификатором, который уже зарегистрирован для другого триммера безопасности, регистрация для первого триммера перезаписывается регистрацией для второго триммера.
properties
Необязательный атрибут. Пары имя/значение, указывающие свойства конфигурации. Должен иметь следующий формат: Name1~Value1~Name2~Value~???

Пример базовой команды для регистрации пользовательского триммера безопасности и пример, указывающий свойства конфигурации, см. в разделе Практическое руководство. Использование пользовательского триммера безопасности для результатов поиска SharePoint Server.

См. также