绝对过滤器对LDAP查询的用处?
我正在仔细阅读OpenLDAP的源代码,我看到了根DSE支持绝对过滤器的地方.它看起来像是在
RFC4526中指定的.看起来最初起草它的作者正在开发OpenLDAP项目,所以我不知道这是否对该特定实现有用或什么.
无论如何,RFC给出了这个定义: An 'and' filter consisting of an empty set of filters SHALL evaluate to True. This filter is represented by the string "(&)". An 'or' filter consisting of an empty set of filters SHALL evaluate to False. This filter is represented by the string "(|)" 我的问题是:这有用吗?我想不出任何能够做出你以前做不到的事情的例子.如果你想要一个绝对的AND然后你不能做一个(objectClass = *)过滤器,因为所有条目必须至少有一个对象类? 我能想到的唯一一个用途就是Absolute False.您可能只想在服务器上执行noop以确保通信仍能正常运行.这仍然是多余的,因为我认为查询根DSE并丢弃结果将做同样的事情,并且不可能是计算上昂贵的. 在ldapsearch中使用过滤器产生的结果我想我应该期望给出以上结果: [root@hypervisor openldap]# ldapsearch -x -H ldap://policyServer.trunkator.com -b '' -s base "(|)" + # extended LDIF # # LDAPv3 # base <> with scope baSEObject # filter: (|) # requesting: + # # search result search: 2 result: 0 Success # numResponses: 1 [root@hypervisor openldap]# 使用绝对真值过滤器会返回相同的东西,就好像我已经完成了一个(objectClass = *)(如果你没有在命令行中指定一个,那么这是OpenLDAP的ldapsearch客户端的默认过滤器). 根据RFC,他们从最初的LDAPv3 RFC中删除了这些,因此作者遇到了将它们添加回来的麻烦,我只是好奇为什么(我确定这是有原因的). 有任何想法吗? 编辑: 有点糟糕的措辞:当我说“root DSE支持”时,更明确的方式是说OpenLDAP中的根DSE是硬编码的,以报告它支持绝对过滤器.
RFC的摘要和背景部分明确指出在LDAP v3中忽略了此功能.绝对过滤器的概念显然是X.500 / DAP的一部分,它们旨在帮助查询特定于DSA的条目,这些条目可能没有与之关联的对象类.虽然这显然不是供应商特定的功能,但它的实现留给了供应商(例如,OpenLDAP似乎已经实现了它).如果使用的目录软件将包括DSA特定条目的所有条目与对象类(例如,顶部)相关联,这使得过滤器'(objectclass = *)’函数就好像它是绝对过滤器一样,这似乎不是非常有用.这导致’真实’.如果目录软件不将DSA特定条目与对象类或其特定值在搜索中解析为“true”的其他属性相关联,则充当真/假开关的绝对过滤器将成为所需特征的一部分(除非目录软件提供检索此类条目的专有方法,这可能不是一个好主意,因为此类非标准实现将强制LDAP客户端受供应商限制/特定).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Angular(一)--前端框架angular、React、Vue的对
- scala – 错误:未找到:值sc
- angularjs – 你在Angular中存储/创建模型的位置
- angular – Child ControlValueAccessor具有form
- Bootstrap Tooltip显示换行和左对齐的解决方案
- 使用bootstrap.sh安装quagga
- unix – execlp()系统调用如何工作?
- scala – 使用Shapeless将Map [String,Any]转换为
- angularjs – ng形式的角度ng重复,访问控制器中的
- “let”内部shell命令在shell脚本中不起作用?