1

我正在尝试搜索我的 LDAP 目录,但当值是一组属性和值时,我无法使用子字符串过滤器进行搜索。

场景:在我的 python 脚本中,我能够搜索 LDAP 服务器。因此,我将省略有关连接、DN 配置等的代码,而将重点放在Filter.

过滤器1:(工作)

'(&(objectClass=person)(managedObjects=CN=SKSOBHEE-MOBL,OU=Mobile,OU=Production,OU=Windows 7,OU=IT 客户端,OU=资源,DC=emea,DC=xx,DC=yy ,DC=com)(objectClass=organizationalPerson)(objectClass=user))'

过滤器2:(失败)

'(&(objectClass=person)(managedObjects=CN=SKSOBHEE-MOBL*)(objectClass=organizationalPerson)(objectClass=user))'

使用Filter1搜索会返回一个用户,但在我使用子字符串时使用Filter2失败。

使用以下方法完成搜索:

l.search_s(BASE_DN, SCOPE, Filter1, Attrs)

我会很感激这方面的帮助!

谢谢你。

4

1 回答 1

0

在询问这些类型的过滤器时,不要使用通配符,而是使用子字符串。

使用substring过滤器时,substring必须为过滤器中使用的属性定义匹配规则。对于equality过滤器,必须有一个equality匹配,对于substring过滤器,一个 substring匹配等。

以下是具有name相等性和子字符串规则的属性定义示例:

attributeTypes: ( 2.5.4.41 NAME 'name' EQUALITY caseIgnoreMatch
  SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768}
  X-ORIGIN 'RFC 4519' )

如果过滤器类型未包含匹配规则,则搜索将不会像您想象的那样工作。

也可以看看

于 2013-11-13T16:38:48.843 回答