Отключенные учетные записи и PeoplePicker
В сегодняшнем посту я расскажу о контроле выбора пользователя и отключенных учетных записях. Если конкретней, то о том как сделать так, чтобы нельзя было выбирать пользователей, учетные записи которых отключены.
Стандартное поведение
Для начала посмотрим как это работает в SharePoint 2010 без нашего вмешательства. Для этого создадим список на портале и добавим туда поле для выбора пользователя: Также нам понадобится учетная запись в домене.
Создадим новую запись в списке. Здесь ничего нового, просто элемент из контрольной группы.
Теперь заблокируем учетную запись и создадим новый элемент в нашем списке. В поведении SharePoint ничего не изменилось. SharePoint плевать отключена учетная запись или нет. Теперь надо сделать так, чтобы такой сценарий был не возможен в нашей системе
Фильтр для PeoplePicker
Фильтр для выбора пользователей накладывается с помощью свойства stsadm Peoplepicker-searchadcustomfilter
. Синтаксис (из technet):
stsadm -o setproperty
-propertyname peoplepicker-searchadcustomfilter
-propertyvalue <строка пользовтельского запроса>
[-url] <URL-адрес>
Для операции getproperty используется следующий синтаксис:
stsadm -o getproperty
-propertyname peoplepicker-searchadcustomfilter
[-url] <URL-адрес>
-propertyvalue
здесь является обычный LDAP-фильтр. Нас интересует фильтрация по признаку Disabled учетной записи. В LDAP это выглядит вот так:
(!userAccountControl:1.2.840.113556.1.4.803:=2))
Для начала проверим, что никаких фильтров нет и быть не может. Для этого исполним следующую команду:
stsadm -o getproperty -propertyname peoplepicker-searchadcustomfilter -url http://[server]
В моем случае я получил ответ о том, что нет такого свойство:
<Property Exist="No" />
Теперь зададим это свойство. Опять же в моем случае команда выглядит вот так:
stsadm -o setproperty -propertyname peoplepicker-searchadcustomfilter -url http://[server] -propertyvalue "(!userAccountControl:1.2.840.113556.1.4.803:=2))"
Вот теперь выбрать пользователей, учетная запись которых отключена нельзя. Здесь есть один нюанс: Учетную запись можно будет выбрать, если пользователь есть в списке пользователей узла. Для проверки работы фильтра удалим пользователя home\firedemployee из списка пользователей. В очередной раз попробуем выбрать нашего пользователя и увидим примерно следующее:
Теперь отключенные учетные записи неприменимы на нашем портале. Справедливость восстановлена.