您应该检查RFC 2254(LDAP 搜索过滤器的字符串表示)。
LDAP 过滤器对布尔运算符使用波兰符号。所以运算符写在它的操作数之前:
(&(condition1)(condition2)(condition3)...)
上面的示例意味着您想要所有满足条件1 AND条件2和条件3 的 LDAP 条目,依此类推。
然后有条件自己。它们非常简单,只能包含几种类型:
- 目前状况 -
(attrName=*)
- 简单条件 -
(attrName>=value)
/ (attrName<=value)
/ (attrNamevalue=value)
/(attrName~=value)
- 子串条件-
(attrName=*value*)
//(attrName=*value)
(attrName=value*)
- 可扩展条件 -
(attrName:dn:=value)
/(attrName:matchingRule:=value)
带有关键字的可扩展条件:dn:
意味着您希望条目 DN 中的属性也被考虑在内。因此,对于您的案例条目cn=John Doe,ou=HumanResources,ou=Users,dc=example,dc=com
将匹配过滤器(ou:dn:=HumanResource)
。
将您的示例过滤器翻译成英文句子将是:
找到所有 LDAP 条目,它们objectClass
等于person
并且在它们的属性中或在它们的 DN 上的某个地方ResearchAndDevelopment
具有或。HumanResources
ou