LINUX.ORG.RU
ФорумAdmin

Openldap и ссылки


0

0

Хочется такого:
иметь ветку с учётными записями пользователей
и отдельные ветки для сервисов (возможно с подветками для хостов).
Всех людей хранить в одном месте, а для сервисов понасоздавать ссылок
на людей, которых им нужно видеть.
Столкнулся с проблемой: при создании ссылок с помощью objectClass: alias,
для них работает поиск по фильтру, но не работает bind.
Если же "ссылки" делать через dynlist overlay,
тогда можно в объекте-ссылке дополнительно указать поле userPassword,
и будет работать bind, но пропадает возможность делать поиск по фильтру.

К примеру имеем:
dc=com
|---dc=users
|   |---uid=user1
|   |     cn: user1; uidNumber: 100; userPassword: xxx
|   \---uid=user2
|         cn: user2; uidNumber: 200; userPassword: yyy
\---dc=links
    |---uid=u1_alias
    |     objectClass: alias; aliasedObjectName: uid=user1,dc=users,dc=com; userPassword: xxx
    \---uid=u2_alias
          objectClass: dynamicListGroup; expandThisURL: ldap:///uid=user2,dc=users,dc=com??base?(objectclass=*); userPassword: yyy

Проверка на bind:
$ ldapsearch -b 'uid=u1_alias,dc=links,dc=com' -xD 'uid=u1_alias,dc=links,dc=com' -w xxx
ldap_bind: Invalid credentials (49)
$ ldapsearch -b 'uid=u2_alias,dc=links,dc=com' -xD 'uid=u2_alias,dc=links,dc=com' -w xxx
подключается и выводит данные объекта (dynlist работает)

Проверка на поиск с фильтром:
$ ldapsearch -b 'dc=links,dc=com' -xD $root_dn -W 'uidNumber=*'
находит только один dn: uid=user1,dc=users,dc=com

Тот же поиск, но без фильтра, находит обе записи

Знает ли кто-нибудь способ сделать так, чтоб и "ссылки" были, и фильтры работали ?
Либо это где-то у меня "лыжи не едут" ?
★★★★★

попробуй забить на dn и настроить sasl:

sasl-regexp
uid=(.*),cn=digest-md5,cn=auth ldap:///o=domain.tld??sub?uid=$1

ldapsearch -U postfix -b "ou=Domains,o=domain.tld" objectClass=* -Y digest-md5


то есть ldap передается только uid, а как его искать он уже сам решает

либо смотреть в опции ldapsearch (-a defer)

borisych ★★★★★
()
Ответ на: комментарий от borisych

Да, с sasl ldapsearch отрабатывает нормально, только вот не совсем понятно каким местом sasl будет относиться к разным сервисам.
К примеру есть jabber (openfire), он берёт пользователей из ветки, в которой одни ссылки на нужных пользователей. Когда кто-то проходит аутентификацию (подключается к jabber-у), jabber делает bind под DN-ом, который является alias-ом (что как раз не срабатывает). Не совсем понимаю как и куда в этом случае можно всунуть sasl.
Вообще из сервисов планируется иметь: ssh (через pam_ldap), почта (exim/postfix + dovecot), jabber (openfire), svn (через apache), возможно в дальнейшем что-то ещё.
Можно чуть подробнее описать схему работы этого всего ? Потому как у меня пока одна мысль: отказаться от ссылок, переделать структуру данных, т.е. сделать не так, как хочется, а так, чтоб хоть как-то всё заработало.

spirit ★★★★★
() автор топика
Ответ на: комментарий от borisych

Да, только похоже не все поддерживают sasl (без понятия как прикрутить это к openfire, mod_dav_svn и др.), да и делать копию user-ов в sasl тоже не весело.
Попробовал overlay rwm - пока вроде все проблемы решаются, на нём и остановлюсь.

spirit ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.