2017-09-12 2 views
0

Ich verwende FreeIPA als LDAP-Backend für meine flask-app. Bisher habe ich flaschen simpleldap mit OpenLDAP verwendet, um die Gruppenmitgliedschaft eines Benutzers zu erhalten, die mit den folgenden Optionen gut funktioniert:Liste aller LDAP-Gruppenmitgliedschaften abrufen

LDAP_BASE_DN="dc=myrealm,dc=com" 
LDAP_REALM_NAME="MyFunRealm" 
LDAP_OBJECTS_DN="dn" 
LDAP_USER_OBJECT_FILTER="(&(objectclass=inetorgperson)(uid=%s))" 
LDAP_GROUP_MEMBERS_FIELD="member" 
LDAP_GROUP_OBJECT_FILTER="(&(objectclass=groupofnames)(member=%s))" 
LDAP_GROUP_MEMBER_FILTER="member=%s" 
LDAP_GROUP_MEMBER_FILTER_FIELD="cn" 

Ich möchte die LDAP-Struktur meiner Benutzer ändern Gruppen in Gruppen zu platzieren , aber die obigen Einstellungen geben nur die Gruppe "erste Stufe" der Benutzer. (Entschuldigung, ich bin nicht vertraut mit LDAP und seiner Terminologie).

Wie kann ich die Abfrage/den Filter ändern, um eine Liste aller Gruppen, denen der Benutzer angehört, durch Gruppenmitgliedschaft zu erhalten?

+0

Was meinst du mit Gruppe in Gruppe? Der Filter '(& (objectclass = groupofnames) (member =% s))' gibt Ihnen alle Gruppen, die der Benutzer '% s'' memberOf' ist, unabhängig davon, wo sich die Gruppe in der Baumstruktur befindet. – Esteban

+0

Eine Gruppe könnte Benutzer oder andere Gruppen enthalten. Wenn sich ein Benutzer in einer Gruppe befindet, die Mitglied einer anderen Gruppe ist, möchte ich, dass beide Gruppen in der Suche angezeigt werden. Die Suche in meiner Frage gibt nur die direkte Gruppenmitgliedschaft zurück. – Lars

Antwort

0

Ich glaube nicht, es möglich ist, Ihr Setup unter Berücksichtigung (dh Kolben + openldap)

OpenLDAP nicht (aus meinem Wissen) in Mechanismus aufgebaut haben Filter auf verschachtelte Gruppen durchzuführen. Und Kolben erledigt die Anfrage für Sie, so dass Sie die rekursive Suche nicht einfach implementieren können.

In anderen Verzeichnis (AD zum Beispiel) können Sie die erweiterbare passende Regel zum Filtern verschachtelte Gruppen, etwas entlang dieser Linie angeben:

(&(objectclass=groupofnames)(member:1.2.840.113556.1.4.1941:=%s))

Aber diese spezifische erweiterbare passende Regel in OpenLDAP existiert nicht

+0

Vielen Dank für Ihre Antwort. Ich werde die Frage für jetzt offen lassen. – Lars

Verwandte Themen