특정 그룹의 구성원인 사용자를 검색하기 위해 단일 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)
타사 포털에 대한 액세스를 제어하는 데 사용되므로 단일 쿼리여야 하며 클라이언트 구현을 변경할 수 없습니다.