如何查找用户所属的所有组?(LDAP)

Rod*_*lfo 6 python ldap openldap

我正在尝试获取某个用户所属的所有组。

我在 ldap 中有以下结构

o=myOrganization
     ou=unit1
         cn=admin
         cn=guess
Run Code Online (Sandbox Code Playgroud)

ou=users
    cn=ann
    cn=bob
    cn=carla
Run Code Online (Sandbox Code Playgroud)
  • myOrganization 是组织的一个实例
  • unit1 是 OrganizationUnit 的一个实例
  • admin并且guess都是 GroupOfNames 并且每个人都是成员
  • ann, bob, 和carla是 Person 的实例

目前,我在 python 上使用 ldap 模块,这就是我所拥有的:

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)
Run Code Online (Sandbox Code Playgroud)

我能够得到用户ann;但是,我如何才能让组Ann所属?

我试过,来自这个页面的以下内容:

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

但是我得到了一个空列表。我还尝试了各种查询组合,但它们都返回空。

PS:我在 linux 机器上使用 OpenLDAP

Joh*_*don 5

member=cn=ann是不足够的。您必须使用 Ann 的完整 DN,可能是这样的:

member=cn=ann,ou=users,dc=company,dc=com
Run Code Online (Sandbox Code Playgroud)