用于检索组织单位中所有用户的Java LDAP查询

时间:2014-05-30 14:38:26

标签: java ldap ldap-query

我找不到通过特定组织单位从LDAP获取用户的方法。只能通过以下方式获得所有用户:

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

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

3 个答案:

答案 0 :(得分:0)

可能你的LDAP路径错误。下载** LDAP Browser **并检查用户所在的路径;然后在查询中使用此确切路径。

答案 1 :(得分:0)

如果OU是子树,请使用它作为搜索的基础。如果是属性,请搜索

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

您的&#39;成员&#39;如果memberOf属性是维护的并且是最新的,则搜索也应该有效,但您需要指定Users的完整DN,而不是juste RDN。

答案 2 :(得分:0)

实际上,如果ou属性是人员条目的一部分,那么你只能使用(ou =用户)过滤器(事实并非如此)。

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

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

  

(及(对象类=人)(OU:DN:=用户))

此致

朱利。