Назад | Перейти на главную страницу

Как вернуть DN пользователя, где его UID находится в определенной группе

Я использую OpenLDAP, который, к сожалению, не имеет свойства memberOf. Обычно при опросе LDAP Active Directory вы можете написать запрос, который:

ldapsearch -Dbinduser -wbinduserpwd -Hldaps://ldapsvr.org -bdn=ldapsvr,dn=org
(&(uid={0},ou=usr,dn=ldapsvr,dn=org)(memberOf=cn=g0001,ou=grps,dn=ldapsvr,dn=org))

но теперь я остался с пользователем в:

dn: uid=u0001,ou=usr,dn=ldapsvr,dn=org
cn: u0001

и группа вроде:

dn: cn=g0001,ou=grps,dn=ldapsvr,dn=org
cn: g0001
memberUid: u0001
memberUid: u0002

Кто-нибудь знает запрос ldapsearch (в частности, правильный фильтр) для возврата DN пользователя? самое близкое, к чему я могу добраться, - это возврат DN группы, если этот memberUid существует, но не DN пользователей в группе. Я думал, что вы можете запросить в ldapsearch, как SQL:

select user.dn 
from dit 
where grp.cn{g001}.memberUid{u0001} = TRUE

Я не думаю, что это можно сделать менее чем за два запроса: первый, чтобы получить uid, а второй - найти dn.

Как обходной путь:

  1. в OpenLDAP храните группы в groupOfNames объекты. Эти объекты позволяют member атрибут, содержание которого является полным dn;
  2. взгляните на memberOf наложение, что позволяет создавать обратное членство (как в Active Directory).