Зараз я працюю над інтеграцією автентифікації LDAP в систему, і хотів би обмежити доступ на основі групи LDAP. Єдиний спосіб зробити це через фільтр пошуку, і тому я вважаю, що єдиним моїм варіантом є використання атрибута "memberOf" у моєму фільтрі пошуку. Наскільки я розумію, що атрибут "memberOf" - це операційний атрибут, який може бути створений сервером для мене в будь-який час, для будь-якого запису "groupOfNames" на сервері створюється новий атрибут "member". Моя головна мета - мати можливість додати атрибут "member" до існуючої записи "groupOfNames" і мати відповідний атрибут "memberOf", який слід додати до DN, який я надаю.
Що мені вдалося досягти поки що:
Я все ще досить новачок у адмініструванні LDAP, але виходячи з того, що я знайшов у посібнику адміністратора openldap, схоже на те, що підтримка Reverse Group Membership Maintence, яка називається "накладення memberof ", дозволила б досягти саме того ефекту, який я шукаю.
На моєму сервері зараз виконується установка пакету (slapd на ubuntu) openldap 2.4.15, який використовує конфігурацію стилю виконання "cn = config". Більшість прикладів, які я знайшов, як і раніше посилаються на старіший "slapd.conf" метод статичної конфігурації, і я намагався зробити все можливе, щоб адаптувати конфігурації до нової моделі на основі каталогу.
Я додав наступні записи, щоб увімкнути модуль накладання memberof:
Увімкніть модуль за допомогою olcModuleLoad
cn=config/cn\=module\{0\}.ldif
dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
olcModuleLoad: {1}memberof.la
structuralObjectClass: olcModuleList
entryUUID: a410ce98-3fdf-102e-82cf-59ccb6b4d60d
creatorsName: cn=config
createTimestamp: 20090927183056Z
entryCSN: 20091009174548.503911Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20091009174548Z
Увімкнено накладення для бази даних і дозволило їй використовувати налаштування за замовчуванням (groupOfNames, member, memberOf тощо)
cn=config/olcDatabase={1}hdb/olcOverlay\=\{0\}memberof
dn: olcOverlay={0}memberof
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {0}memberof
structuralObjectClass: olcMemberOf
entryUUID: 6d599084-490c-102e-80f6-f1a5d50be388
creatorsName: cn=admin,cn=config
createTimestamp: 20091009104412Z
olcMemberOfRefInt: TRUE
entryCSN: 20091009173500.139380Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20091009173500Z
Мій поточний результат:
Використовуючи вищевказану конфігурацію, я можу додати НОВОГО "groupOfNames" з будь-якою кількістю записів "member" і оновити всі залучені ДНЗ атрибутом "memberOf". Це частина поведінки, яку я б очікував. Хоча я вважаю, що з накладкою memberof слід було виконати наступне, я все ще не знаю, як зробити наступне, і я з радістю вітатиму будь-яку пораду:
- Додайте атрибут "member" до існуючого "groupOfNames" та мати відповідний атрибут "memberOf" створити автоматично.
- Видаліть атрибут "member", а відповідний атрибут "memberOf" буде видалено автоматично.
slapadd
(на зупинену базу даних) правильний спосіб зробити це?