Поскольку результирующая запись строится динамически, в своём конечном виде (со всеми собранными атрибутами) она существует только после построения, перед возвратом её клиенту. Как следствие, динамически добавленные атрибуты не участвуют в фазе оценки поискового фильтра при обработке поискового запроса. Другими словами, фильтрация по динамически добавленным атрибутам всегда завершается неудачей.
Полученная в результате подстановки запись должна соответствовать модели данных LDAP, поэтому соблюдаются ограничения модели данных. К примеру, если в списке атрибутов перечислен атрибут, у которого разрешено только одно значение (SINGLE-VALUE), в итоговой записи будет присутствовать только первое из полученных в результате поиска значений. При использовании элемента управления manageDSAit (RFC 3296) описанных выше действий не происходит. В этом случае возвращается содержимое самой записи динамической группы, то есть URL не раскрываются, а сами возвращаются в ответ на запрос.
Следующая директива конфигурации slapd.conf определяется для наложения dynlist. Она может указываться несколько раз после директивы overlay.
Опциональный URI ограничивает область действия директивы только теми записями, которые попадают в диапазон, задаваемый частями DN, scope и filter этого URI.
Значение URL-ad представляет собой имя описания атрибута (attributeDescription), содержащего URI, посредством которого наложение будет наполнять запись данными. Если в записи нет ни одного такого атрибута, наполнение выполняться не будет. Если пересечение запрашиваемых в операции Search атрибутов (или атрибутов, присутствующих в утверждениях, предназначенных для выполнения сравнения) и атрибутов, перечисленных в URI, будет пустым, то расширения записи по данному конкретному URI происходить не будет. Указываемый в этом значении тип атрибута должен быть подтипом от labeledURI.
Значение member-ad является опциональным; при его наличии, наложение dynlist переходит в режим составления динамической группы: в указанном атрибуте в качестве значений будут перечислены DN записей, найденных в результате выполнения внутреннего поиска по указанному в атрибуте URL-ad URI. В этом случае часть attrs данного URI должна быть опущена. Сравнения, в утверждениях которых присутствуют значения атрибута member-ad записи с объектным классом group-oc, выполняются так, как если бы DN записей, найденных в результате выполнения поиска по URI, присутствовали бы в записи с объектным классом group-oc как значения атрибута member-ad.
Альтернативный вариант: можно использовать конструкцию mapped-ad:member-ad для отображения значений атрибутов, полученных в результате поиска, в значения других атрибутов. В этом случае DN записей, найденных в результате поиска, не используются для наполнения значений атрибута member-ad, но значения атрибутов member-ad, если те указанны в части attrs URI из атрибута URL-ad, отображаются в значения атрибутов mapped-ad. Можно задавать несколько настроек отображения.
Наложение dynlist может использоваться с любыми механизмами манипуляции данными, но главным образом оно предназначено для использования с механизмами локального хранения данных. В случае, если поиск по URI потребляет много ресурсов и повторяется часто с чётко определёнными шаблонами, следует рассмотреть возможность добавления наложения proxycache после dynlist в стеке наложений.
include /path/to/dyngroup.schema # ... database <database> # ... overlay dynlist dynlist-attrset groupOfURLs memberURL
Кроме того, убедитесь, что slapd загружает модуль dynlist.la, если тот скомпилирован в виде загружаемого модуля. После этого добавьте в базу данных такую запись:
dn: cn=Dynamic List,ou=Groups,dc=example,dc=com objectClass: groupOfURLs cn: Dynamic List memberURL: ldap:///ou=People,dc=example,dc=com?mail?sub?(objectClass=person)
Если в URI не указана часть <attrs>, будут собраны все (неоперационные) атрибуты.
В этом примере реализуется возможность создания динамических групп, члены которых собираются в атрибуте member:
include /path/to/dyngroup.schema # ... database <database> # ... overlay dynlist dynlist-attrset groupOfURLs memberURL member
Динамическая группа с авторизацией от имени записи, указанной в dgIdentity:
dn: cn=Dynamic Group,ou=Groups,dc=example,dc=com objectClass: groupOfURLs objectClass: dgIdentityAux cn: Dynamic Group memberURL: ldap:///ou=People,dc=example,dc=com??sub?(objectClass=person) dgIdentity: cn=Group Proxy,ou=Services,dc=example,dc=com
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |