【问题标题】:Java LDAP query to retrieve all users in an organisational unit用于检索组织单位中所有用户的 Java LDAP 查询
【发布时间】:2014-05-30 14:38:25
【问题描述】:

我找不到按特定组织单位从 LDAP 获取用户的方法。只能获取所有用户:

List users = (List<User>) ldapTemplate.search(base, "(&(objectClass=person))", new UserAttributesMapper());

如果我添加到类似 (memberOf=OU=Users) 的查询中,我会得到空结果。这种操作的正确查询是什么?

【问题讨论】:

    标签: java ldap ldap-query


    【解决方案1】:

    您的 LDAP 路径可能有误。下载**LDAP Browser** 并检查您的用户所在的路径;然后在您的查询中使用这个确切的路径。

    【讨论】:

      【解决方案2】:

      如果 OU 是子树,则将其用作搜索的基础。如果是属性,请搜索

      (&(objectClass=person)(ou=Users))
      

      如果 memberOf 属性得到维护并且是最新的,您的“memberOf”搜索也应该有效,但您需要指定用户的完整 DN,而不仅仅是 RDN。

      【讨论】:

        【解决方案3】:

        实际上,您只能使用 (ou=Users) 过滤器,如果 ou 属性是人员条目的一部分(几乎不是这种情况)。

        您可以使用 ou=Users,dc=Company,dc=com 作为基础。

        否则,LDAP 标准定义了一种将断言作为专有名称的一部分进行匹配的方法,但不幸的是,并非所有 LDAP 服务器都支持这种方法。 OpenDJ、Sun Directory Server 和 RH DS 确实支持它,可能还有其他一些。 您应该使用的过滤器如下:

        (&(objectclass=person)(ou:dn:=users))

        问候,

        卢多维奇。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多