如何列出ldap组的所有组成员?

如何列出ldap组的所有组成员?,ldap,plone,python-ldap,Ldap,Plone,Python Ldap,我有Plone 3和LDAP,其中有很多组和用户。我希望获得特定组的所有组成员 groupe\u id=“mygroup” gtool=getToolByName(自“门户\组”) group=gtool.getGroupById(groupe\u id) members=group.getAllGroupMembers() 这里的成员总是返回[],但实际上,我的组中确实有一些用户。简短的回答可能是:你不能 当您(或Plone)向ldap请求用户列表时,ldap可能会认为它找到的结果太多,而只

我有Plone 3和LDAP,其中有很多组和用户。我希望获得特定组的所有组成员

groupe\u id=“mygroup”
gtool=getToolByName(自“门户\组”)
group=gtool.getGroupById(groupe\u id)
members=group.getAllGroupMembers()

这里的成员总是返回
[]
,但实际上,我的组中确实有一些用户。

简短的回答可能是:你不能

当您(或Plone)向ldap请求用户列表时,ldap可能会认为它找到的结果太多,而只是返回一个基本上为空的列表。因此,通常最好更改用户和组控制面板中的设置,并打开“多个用户”和“多个组”。例如,这样可以确保不显示“显示所有用户”按钮

在本文中,我通过使用portal_membership.searchFormMembers(login=char)来解决这个问题,然后使用char迭代a、b等

(顺便说一句,它不会搜索特定组中的成员。)


它真的很难看,所以我希望有一个更好的答案,这样我就可以更新这个工具了。:-)

我不知道plone,但它是基于posix结构的,您可以很容易地做到这一点

import ldap

con = ldap.initialize('ldap://127.0.0.1')
con.simple_bind_s('cn=myuser', 'oh_yeah')
groups = con.search_s('dc=rkf,dc=org',
                      ldap.SCOPE_SUBTREE,
                      'objectclass=posixgroup',
                      ['memberuid'])

for a in groups:
    print 'Group:', a[0]
    print 'Members:', a[-1].get('memberuid')

真奇怪。当我使用LDAPBrowser时,我可以浏览任何组的所有成员。。。