绝对过滤器对LDAP查询的用处?

前端之家收集整理的这篇文章主要介绍了绝对过滤器对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客户端受供应商限制/特定).

猜你在找的Bash相关文章