LDAP: как получить членов группы по членскому идентификатору группы?

Я пытаюсь написать единый фильтр поиска LDAP для поиска пользователей, которые являются членами определенной группы.

Мы используем специальную реализацию LDAP (работающую на OpenLDAP: slapd 2.4.40), в которой сопоставляются отношения между пользователем и группами..

Пользовательский LDIF не имеет атрибутовmemberOf, что делает невозможным использование обычного подхода(&(objectClass=person)(memberOf=login_group))

Пользовательские LDIF выглядят следующим образом:

      dn: uid=user1,ou=people,dc=example,dc=com
cn: user1
displayName:: User1
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: shadowAccount
objectClass: posixAccount
uidNumber: 2698
uid: user1

Группа LDIF выглядит следующим образом:

      dn: cn=login_group,ou=groups,dc=example,dc=com
gidNumber: 1643
objectClass: posixGroup
objectClass: top
objectClass: groupOfUniqueNames
cn: login_group
memberUid: user1
memberUid: user2

Можно ли написать один запрос LDAP, который будет эквивалентен SQL JOIN или фильтру «IN», например.

      SELECT u.* FROM user u WHERE u.uid IN (SELECT memberUid FROM group WHERE cn=login_group)

Это должен быть одиночный запрос, поскольку он будет использоваться для управления доступом к стороннему порталу, мы не можем изменить реализацию клиента.

0 ответов

Другие вопросы по тегам