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

是否可以编写一个与 SQL JOIN 或“IN”过滤器等效的单个 LDAP 查询,例如。

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

它必须是一个单一查询,因为它将用于控制对第三方门户的访问,我们无法更改客户端的实现。

相关内容