如果我只希望来自OU的用户名称以“sales”开头,那么查询将如何。
例如:
(&(objectCategory=person))
答案 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" 。