在我的LDAP客户端程序中,有时我必须在搜索过滤器中包含DN值。但是这个DN经常变化,我必须在代码中更改此过滤器。
当我用谷歌搜索它时,我得到了类似的东西
假设您想要从R& D和HR ous中提取ObjectType = Person的所有用户,而不是来自Marketing和PM的任何用户。过滤器将是:
(&(objectClass=person)(|(ou:dn:=ResearchAndDevelopment)(ou:dn:=HumanResources)))
有人可以更详细地解释一下吗?
答案 0 :(得分:10)
您应该检查RFC 2254(LDAP搜索过滤器的字符串表示)。
LDAP过滤器使用polish notation作为布尔运算符。因此,运算符在其操作数之前写入:
(&(condition1)(condition2)(condition3)...)
上述示例意味着您希望所有满足 condition1 AND condition2 AND condition3 的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
并且ResearchAndDevelopment
属性中HumanResources
或ou
或其DN上某个位置的LDAP条目。