在我的LDAP客户端程序中,有时我必须在搜索过滤器中包含DN值.但是这个DN经常变化,我必须在代码中更改此过滤器.
当我用谷歌搜索它时,我得到了类似的东西
假设您想从研发和人力资源中提取ObjectType = Person的所有用户,而不是来自Marketing和PM的任何用户.过滤器将是:
(&(objectClass=person)(|(ou:dn:=ResearchAndDevelopment)(ou:dn:=HumanResources)))
Run Code Online (Sandbox Code Playgroud)
任何人都可以更详细地解释这一点吗?
Pav*_*ral 10
您应该检查RFC 2254(LDAP搜索过滤器的字符串表示).
LDAP过滤器对布尔运算符使用波兰表示法.所以运算符在其操作数之前写入:
(&(condition1)(condition2)(condition3)...)
Run Code Online (Sandbox Code Playgroud)
上面的示例意味着您需要满足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.
| 归档时间: |
|
| 查看次数: |
30106 次 |
| 最近记录: |