понедельник, 11 июня 2012 г.

Расширение dynlist

Расширение dynlist позволяет создавать группы на основе поисковых запросов. Данная технология имеет ограничения - содержание группы формируется в момент чтения объекта(выполняется вложенный запрос). Но тем не менее динамические группы позволяют существенно расширить функциональность каталога.


Для активации данного расширения необходимо подключить схему dyngroup.schema и загрузить расширение dynlist:

include /etc/openldap/schema/dyngroup.schema
moduleload dynlist.la

затем в описании базы добавить расширение и определение атрибутов:

overlay dynlist
dynlist-attrset groupOfURLs memberURL

После перезагрузки конфигурации сервера OpenLDAP можно создавать динамические списки, например так:

dn: cn=server1,ou=special,dc=example,dc=com
objectClass: groupOfURLs
cn: server1
memberURL: ldap:///ou=users,dc=example,dc=com?cn,sn?sub?(cn=admin1*)

Наибольший интерес представляет поле memberURL - это поисковый запрос LDAP, записанный в виде URI:

ldap://[ip or host]/ - протокол (ldap, ldaps или ldapi) доступа к серверу и его ip-адрес или имя хоста. Если адрес не указывается, то поиск выполняется на том же сервере OpenLDAP, к которому происходит обращение при чтении динамического списка.
ou=users,dc=example,dc=com - база для выполнения поискового запроса
?cn,sn - список атрибутов, которые должен вернуть поисковый запрос и которые будут отображены в экземпляре объекта
?sub - поиск производится без ограничений глубины вложенности
?(cn=admin1*) - сам поисковый запрос

Более подробно формирование поисковых запросов прасмотренно в статье Поиск в LDAP.

Если у нас в каталоге храняться следующие объекты:

ldapsearch -b ou=users,dc=example,dc=com -x -LLL

dn: ou=users,dc=example,dc=com
objectClass: organizationalUnit
ou: users

dn: cn=admin11,ou=users,dc=example,dc=com
objectClass: person
sn: Server1 admin
cn: admin11
userPassword:: dGVzdA==

dn: cn=admin12,ou=users,dc=example,dc=com
objectClass: person
sn: Server1 admin
cn: admin12
userPassword:: dGVzdA==

dn: cn=admin21,ou=users,dc=example,dc=com
objectClass: person
sn: Server2 admin
cn: admin21
userPassword:: c2VjcmV0
то запрос к нашему динамеческому списку вернет следующий результат:

ldapsearch -b cn=server1,ou=special,dc=example,dc=com -x -s base -LLL

dn: cn=server1,ou=special,dc=example,dc=com
objectClass: groupOfURLs
cn: server1
cn: admin11
cn: admin12
memberURL: ldap:///ou=users,dc=example,dc=com?cn,sn?sub?(cn=admin1*)
sn: Server1 admin

Применение динамеческих списков при практической эксплуатации каталога ограничена только вашей фантазией и возможностями описания поисковых запросов в LDAP.

Комментариев нет:

Отправить комментарий