LDAP: Wie rufe ich Gruppenmitglieder anhand der Member-UID der Gruppe ab?

LDAP: Wie rufe ich Gruppenmitglieder anhand der Member-UID der Gruppe ab?

Ich versuche, einen einzelnen LDAP-Suchfilter zu schreiben, um Benutzer abzurufen, die Mitglied einer bestimmten Gruppe sind.

Wir verwenden eine benutzerdefinierte LDAP-Implementierung (läuft auf OpenLDAP: slapd 2.4.40), in der die Beziehungen zwischen Benutzern und Gruppen abgebildet werden Group (memberUid) -> User (uid).

Der Benutzer-LDIF hat keine memberOf-Attribute, was es unmöglich macht, den üblichen Ansatz von(&(objectClass=person)(memberOf=login_group))

Die Benutzer-LDIFs sehen folgendermaßen aus:

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

Die LDIF-Gruppe sieht folgendermaßen aus:

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

Ist es möglich, eine einzelne LDAP-Abfrage zu schreiben, die das Äquivalent eines SQL JOIN- oder „IN“-Filters bewirkt, z. B.

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

Es muss sich um eine einzelne Abfrage handeln, da sie zur Steuerung des Zugriffs auf ein Drittanbieterportal verwendet wird. Wir können die Clientimplementierung nicht ändern.

verwandte Informationen