LDAP: как получить участников группы по memberUid группы?

LDAP: как получить участников группы по memberUid группы?

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

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

Пользовательский 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)

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

Связанный контент