1.2.840.113556.1.4.1941(LDAP_MATCHING_RULE_IN_CHAIN)有性能问题?

Sco*_*ord 7 performance ldap active-directory

LDAP搜索有一些内置规则,其中一个是LDAP_MATCHING_RULE_IN_CHAIN.

来自MSDN:

1.2.840.113556.1.4.1941 LDAP_MATCHING_RULE_IN_CHAIN此规则仅限于适用于DN的过滤器.这是一个特殊的"扩展"匹配运算符,它将对象中的祖先链一直遍历到根,直到找到匹配为止.

他们继续说明它是如何用于递归搜索,而不是来回服务器:

LDAP_MATCHING_RULE_IN_CHAIN是匹配规则OID,旨在提供查找对象祖先的方法....以前,应用程序执行传递组扩展以计算组成员资格,这会占用过多的网络带宽; 应用程序需要进行多次往返以确定一个对象是否"链中"如果链接遍历到最后.

他们还说它有两个明显的用例:

  • 检查用户"user1"是否是组"group1"的成员
  • 找到"user1"所属的所有组

话虽这么说,很多 发现,在实践中,使用LDAP_MATCHING_RULE_IN_CHAIN慢得多(在本例中,约10倍),比简单地做递归"成员的"搜索,以上报价称LDAP_MATCHING_RULE_IN_CHAIN目的是要取代.

那么,为什么这种LDAP_MATCHING_RULE_IN_CHAIN方法会变慢? 我们错过了什么吗?我们没有覆盖边缘情况吗?世界上有没有任何理由使用它LDAP_MATCHING_RULE_IN_CHAIN,为什么,如果它不必要地缓慢,是不是它被修复了?