Я боролся с тем же самым, документация openldap минималистична и вряд ли может быть полезной. Когда они перешли к базе данных конфигурации (неплохая идея в принципе), все параметры изменились, поэтому, когда люди приводят пример из /etc/ldap/slapd.conf, это бесполезно с современной конфигурацией slapd (например, Ubuntu).
Я наконец получил это работающее. Вот краткое изложение ... первый файл LDIF:
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/ldap
olcModuleLoad: memberof
Второй файл LDIF:
dn: olcOverlay=memberof,olcDatabase={1}hdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
Добавьте их в базу данных конфигурации с помощью ldapadd (так же, как и обычные параметры конфигурации).
Он не обновляет автоматически существующие данные в базе данных, поэтому мне нужно было использовать slapcat, чтобы скопировать все во временный файл и посетить каждую группу, удалить группу и снова добавить ту же группу (заставляет атрибуты memberOf обновляться правильно). Если вы начинаете с пустой базы данных, она будет правильно обновлять атрибуты по мере добавления объектов.
Также обратите внимание, что "olcDatabase = {1} hdb" очень типично, но не гарантирует соответствовать вашей настройке. Обязательно проверьте это.
Я недавно записал об этом на моем блоге, www.jordaneunson.com я скопировал и вставил соответствующие части в.
То, что я должен был сделать, было остановить "slapd" сервис на мой сервер LDAP и отредактировать мой slapd.conf файл и добавить следующие две строки.
moduleload memberof.la
overlay memberof
У меня уже был groupOfNames, названный vpn, таким образом, я затем должен был создать файл LDIF со следующим содержанием:
dn: cn=vpn,ou=Groups,dc=shop,dc=lan
objectclass: groupofnames
cn: vpn
description: Users allowed to connect on VPN
member: uid=jordan,ou=People,dc=shop,dc=lan
И добавил это к моей ldap базе данных
slapadd -f file.ldif
После этого я включил ldap сервер в отладке для проверки ошибок
slapd -d 99 -f /etc/ldap/slapd.conf
и проверенный, чтобы удостовериться, что мой состав группы “vpn” был перечислен в моей пользовательской записи.
ldapsearch -h ldap -x -b "dc=shop,dc=lan" '(uid=jordan)' memberOf
и обман! успех!
jordan, People, shop.lan
dn: uid=jordan,ou=People,dc=shop,dc=lan
memberOf: cn=vpn,ou=Groups,dc=shop,dc=lan
Таким образом, я разжег slapd сервис назад и имел много успеха с тех пор. Для нового инструмента управления GUI я использую phpLDAPAdmin и не имею никаких проблем с атрибутом memberOf, присваиваемым и неназначенным моим пользователям.
Одна последняя вещь отметить состоит в том, что атрибут "memberOf" не является частью основной схемы LDAP v3, и таким образом выполнение ldapsearch не покажет этот атрибут, если конкретно не запрошено. Именно поэтому в моем выше примера это объявляется в конце ldapsearch параметров.
Надеюсь, это поможет.
Править: Я просто протестировал Вашу проблему с Studio Каталога Apache: пока я ввожу членское значение атрибута в целом, как упомянуто выше его A-OK работ. Однако атрибут memberOf не обнаруживается в пользовательской записи. Это вызвано тем, что атрибут memberOf не является частью схемы LDAPv3. Чтобы проверить, что это - там использование инструмент командной строки ldapsearch:
ldapsearch -h ldap -x -b "dc=shop,dc=lan" '(uid=jordan)' memberOf