Active Directory是否真的符合LDAP标准?

时间:2010-01-20 05:10:18

标签: active-directory ldap

我正在开发一个产品插件(一个RMS),允许客户将存储在其LDAP目录中的员工信息导入我们应用程序中相应的 Person 记录。

我们的RMS允许 Person 记录具有多个名称和地址(它是一个公共安全系统:此功能用于支持具有AKA和多个已知地址的人员)。由于软件的性质,我们认为如果LDAP服务器支持,从LDAP中提取多个名称和地址非常有用。

我的印象是Active Directory会支持这一点,但它根本不显示。例如,查看RFC 2256,第5.41和5.42节,givenName似乎是一个多值字段(即语法未指定SINGLE-VALUE),{ {3}}声明“多值”是默认值)。 cnsnstreetAddress以及大多数其他“标准”属性也是如此。我很想查找。

微软的RFC 2252似乎表明它们符合RFC 2256:

  

目前,Windows 2000 Active   目录达到LDAP合规性   通过支持以下RF​​C。

     

[RFC 2256随后列在各种“支持的”RFC中,标题为“核心LDAP要求 - RFC 3377”]

own documentation指出RFC 2256确实是8个RFC集合的一部分,它们共同构成了LDAPv3的完整技术规范。

我很困惑:不会遵循标准属性的实际建议语法,例如givenName等。构成“违规”?

此外,是否有人在连接和查询Active Directory与其他目录服务器(OpenLDAP,eDirectory等)之间有明确的差异列表?这是一个VB6应用程序,所以我一直在使用ADSDSOObject ADODB提供程序。最初我以为我可以为任何目录服务器编写相同的代码并且只要我使用标准属性就可以工作,但很明显,如果在某些实现中将相同的属性定义为单值,而在其他实现中将多值定义为我将不得不编写代码来处理这种情况。

我开始怀疑这是否是为什么这么多具有​​某种“LDAP集成”的应用程序通常具有完全独立的“Active Directory”设置页面,然后是“每个其他LDAP服务器”的设置的原因之一那不是Active Directory“......

2 个答案:

答案 0 :(得分:2)

标准“符合”的问题在于,实体或软件在所有可能的方面都是真正100%兼容的。相反,在没有一些准则或规则的情况下,使用短语“合规”通常意味着实施实体认为软件满足规范的要求。

例如,采用CSS Level 2.今天的大多数现代浏览器都声称“符合CSS 2”,但并非每个此类浏览器都实现100%的规范。然而,用户可能会发现渲染体验在很大一部分情况下大致相同。因此,合规性倾向于通过以下组合表示:

  • 实施者的主张(例如,Mozilla发表声明称Firefox 3.5符合CSS 2)
  • 第三方测试(例如酸测试)

这与AD和LDAP“合规性”的方式大致相同。您链接的文档暗示没有任何合规性或一致性指令,因此Microsoft采取了(合理的,IMO)立场,即“供应商声明与第三方测试套件相结合是最合适的替代方案”。从本质上讲,这意味着如果Exchange和其他声明LDAP合规性的实体通过了测试符合标准的测试,那么它们就是有效的。

答案 1 :(得分:2)

不幸的是,Active Directory打破了许多LDAP事物,“单值”只是其中之一。

  

我开始怀疑这是否是为什么这么多具有​​某种“LDAP集成”的应用程序通常具有完全独立的“Active Directory”设置页面的原因之一...

绝对

  

是否有人在连接和查询Active Directory与其他目录服务器(OpenLDAP,eDirectory等)之间有明确的差异列表?

我还没见过一个。但是,Active Directory架构在MSDN中有详细记录,因此您始终可以检查差异。