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

标签 python ldap openldap

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

我在 ldap 中有以下结构:

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


ou=users
    cn=ann
    cn=bob
    cn=carla
  • myOrganization是组织
  • 的一个实例
  • unit1是 OrganizationUnit
  • 的一个实例
  • adminguess都是 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)
    

    我能够得到用户ann ;但是,我该如何获取群组 Ann属于?

    我试过了,以下来自this页:
    search_filter='(|(&(objectClass=*)(member=cn=ann)))'
    results = l.search_s([BASE_DN], ldap.SCOPE_SUBTREE, search_filter, ['cn',])
    

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

    PS:我在 linux 机器上使用 OpenLDAP

    最佳答案

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

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

    关于python - 如何查找用户所属的所有组? (LDAP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40225230/

    相关文章:

    java - 配置ldap以授权用户

    python - 检查函数是否使用@classmethod

    grails - Grails-Spring Security和LDAP到数据库的映射

    java - 拦截 LDAP 以收集统计信息

    java - 如何在 Java 8 中解析 LDAP 通用时间?

    java - 使用 JNDI 从 Java 在 LDAP 中使用 ppolicy 时如何获取特定错误

    linux - 不允许未经身份验证的绑定(bind)(没有密码的 DN)

    python - 保留基于另一个数组的数组中的唯一值,同时保留顺序

    python - Pandas 如何根据索引值改变序列并保留其他序列值

    python - 附加处理程序以响应 python 中对象内的信号