¿Cómo encontrar todos los grupos de los que el usuario es miembro? (LDAP)

Estoy tratando de obtener todos los grupos de los que un determinado usuario es miembro.

Tengo las siguientes estructuras en ldap:

o=myOrganization ou=unit1 cn=admin cn=guess 

y

 ou=users cn=ann cn=bob cn=carla 
  • myOrganization es una instancia de Organización
  • unit1 es una instancia de OrganizationUnit
  • admin y guess son GroupOfNames y tienen a todos como miembros
  • ann , bob y carla son instancias de person

Actualmente, estoy usando el módulo ldap en python y esto es lo que tengo:

 import ldap l = ldap.initialize("ldap://my_host") l.simple_bind_s("[my_dn]", "[my_pass]") ldap_result = l.search("[BASE_DN]", ldap.SCOPE_SUBTREE, "(&(objectClass=Person)(cn=ann))", None) res_type, data = l.result(ldap_result, 0) print(data) 

Y soy capaz de obtener el usuario ann ; pero, ¿cómo hago para obtener los grupos a los que pertenece Ann ?

Lo intenté, lo siguiente de esta página:

 search_filter='(|(&(objectClass=*)(member=cn=ann)))' results = l.search_s([BASE_DN], ldap.SCOPE_SUBTREE, search_filter, ['cn',]) 

Pero tengo una lista vacía. También probé varias combinaciones de consultas, pero todas regresan vacías.

PD: estoy usando OpenLDAP en una máquina linux

member=cn=ann no es suficiente. Tienes que usar el DN completo de ann, probablemente algo como esto:

 member=cn=ann,ou=users,dc=company,dc=com