用于与列表进行比较的LDAP查询语法

时间:2009-05-29 18:38:10

标签: ldap

有没有办法用SQL语法中的“IN”语句查询LDAP?我的意思是提供一个值列表,而不是一次又一次地重复字段名称。

让我解释一下:))

我的查询类似于:

(|(name=joe)(name=bill)(name=mark)(name=john)(name=rob))

有没有办法缩小此查询以获得如下内容:

(name=joe,bill,mark,john,rob)

由于

3 个答案:

答案 0 :(得分:7)

不幸的是没有。 ldapsearch过滤器必须符合RFC2254标准。

但是您总是可以编写自己的包装器(例如调用ldapsearch的shell脚本),它会将类似列表的语法重写为正确的RFC2254语法:)

答案 1 :(得分:1)

另外,我猜你想让那个查询使用|而不是&。

答案 2 :(得分:1)

不,但是您想要的结果可以通过多种方式实现。一种是以某种方式将条目组合在一起。可以合理地假设“乔”,“账单”,“标记”和其他人有共同之处。使用groupOfUniqueNames对象类,目录管理员可以在组中放置“joe”,“bill”,“mark”和其他对象,以便可以检索它们。

或者,如果“joe”,“bill”,“mark”和其他人具有共同的属性,则可以使用动态组,其中组的内容由过滤器确定。例如,如果“joe”,“bill”,“mark”和其他人向同一位经理报告,并且经理的条目是name=matthew,ou=managers,dc=example,dc=com,“joe”,“bill”,“mark”,以及其他人可能具有值managersDn的属性name=matthew,ou=managers,dc=example,dc=com。目录管理员可以使用过滤器managerDn=name=matthew,ou=managers,dc=example,dc=com创建动态组。动态组的优点是每次组成为搜索的一部分时都会更新,不需要手动更新。

或者,一些专业质量的目录服务器支持使用虚拟属性,这会导致根据某些其他条件为条目生成属性。

可以这么说,假设您搜索的条目以某种方式相关,请使用目录服务器分组机制将它们组合在一起。如果它们不相关,那么过滤器必须与您列出的一样,但|而不是&除外。