LDAP可扩展匹配筛选器LDAP_MATCHING_RULE_IN_CHAIN



当我运行以下程序时,我会得到一个很好的结果列表:

base = 'OU=Security Groups,OU=Groups,DC=myserver,DC=com'
criteria = 'CN=My Example'
attributes = ['member', 'groupType', 'description', 'memberOf']
result = connection.search_ext_s(base, ldap.SCOPE_SUBTREE, criteria, attributes, sizelimit=0)

然而,在使用LDAP_MATCHING_RULE_IN_CHAIN时,我似乎找不到任何有助于我的东西。

base = 'OU=Security Groups,OU=Groups,DC=myserver,DC=com'
criteria = '1.2.840.113556.1.4.1941:=CN=MatchedRuleChainExample'
attributes = ['member', 'groupType', 'description', 'memberOf']
result = connection.search_ext_s(base, ldap.SCOPE_SUBTREE, criteria, attributes, sizelimit=0)

以上始终返回空白。有人能帮我抓住这个吗?我完全不知道如何通过Python中的子组。

此条件语法1.2.840.113556.1.4.1941:=CN=MatchedRuleChainExample是错误的。

LDAP可扩展匹配筛选器的字符串表示必须按顺序由以下组件组成:

  • 左括号
  • 属性类型的名称,如果未提供,则为空字符串
  • 如果设置了dnAttributes标志,则为字符串":dn";如果未设置,则为空字符串
  • 如果匹配的规则ID可用,则由冒号后跟该OID组成的字符串,如果没有匹配,则为空字符串规则ID
  • 字符串":=">
  • 断言值的字符串表示形式
  • 右括号

总结一下,它应该看起来像:

([<attr>][:dn][:<OID>]:=<assertion>)
# In your case, fixing the attribute position :
(cn:1.2.840.113556.1.4.1941:=MatchedRuleChainExample)

但这里还有另一个问题:LDAP_MATCHING_RULE_IN_CHAIN只在与可分辨名称(DN(类型属性(如membermemberOf,通常与可扩展匹配过滤器一起使用(一起使用时有效,但cn不起作用,因此无法工作。

要获取CN=My Example的所有Security Groups成员,包括嵌套组,请使用具有可扩展匹配的memberOf属性,并将其应用于组的dn

# Fixing the attribute type and assertion value :
(memberOf:1.2.840.113556.1.4.1941:=<groupDN>)

此外,您需要筛选objectClass以仅匹配组条目(组成员也可以是用户或机器(。所以最终,过滤标准应该是这样的:

(&(objectClass=groupOfNames)(memberOf:1.2.840.113556.1.4.1941:=CN=My Example,OU=Security Groups,OU=Groups,DC=myserver,DC=com))

cf。Active Directory组相关搜索

请注意,LDAP_MATCHING_RULE_IN_CHAIN仅在具有Windows Server 2003 R2(或更高版本(的域控制器上可用

相关内容

  • 没有找到相关文章

最新更新