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)

これはサードパーティのポータルへのアクセスを制御するために使用されるため、単一のクエリである必要があり、クライアントの実装を変更することはできません。

関連情報