LDAP查询中的子过滤器

时间:2011-03-29 07:05:16

标签: active-directory ldap

如果我只希望来自OU的用户名称以“sales”开头,那么查询将如何。

例如:

(&(objectCategory=person))

3 个答案:

答案 0 :(得分:2)

一般来说,没有办法按用户的OU名称查询用户,因为a)用户通常不包含任何关于他们所属的OU的知识(例如,不像组成员资格),因此没有任何东西可以添加到过滤器b)LDAP过滤器是非常有限的,没有子过滤器或子查询这样的东西。

问题的部分解决方案可能是将ldap_search的BaseDN参数设置为OU路径。

通常在某种客户端代码的帮助下处理更复杂的查询。

答案 1 :(得分:0)

看起来您正在使用Active Directory,我不确定它是否有效。但是在纯LDAP实现中存在一个名为 ExtensibleMatch 的功能,似乎在this wiki article中得到了正确的解释。您还会找到一些有用的示例here

Active directory seems not to support this

JP

答案 2 :(得分:0)

目录数据库中的对象已将属性objectClass与其关联,这些值确定对象中必须包含哪些属性。 organizationalPerson及其后代inetOrgPerson允许在对象中包含ou属性。如果您的应用程序需要查找具有特定值ou属性的对象,请在相等过滤器中包含ou

(ou=organization name)

或者将搜索请求返回的对象限制为具有确切大小写的ou属性的对象,使用extensible match filter(LDAP兼容的专业质量服务器支持可扩展匹配过滤器):

(ou:caseExactMatch:=Organization Name)

或者如果对象从属于ou,则进行类似的确定,即条目的DN类似于uid=user.0,ou=people,dc=example,dc=com,使用包含DN的可扩展匹配过滤器:

(ou:dn:caseExactMatch:=people)

或确定哪些对象具有属性ou使用“状态过滤器”:

(ou=*)

上述所有技术都可能要求ou属性编入索引。有关搜索请求和响应的更多常规信息,请参阅 "Using ldapsearch"

相关问题