Active directory Active Directory真的与LDAP兼容吗?
我正在为我们的一个产品(RMS)开发一个插件,它允许客户将存储在LDAP目录中的员工信息导入到应用程序中相应的人员记录中 我们的RMS允许个人记录具有多个姓名和地址(这是一个公共安全系统:此功能用于支持具有AKA和多个已知地址的个人)。由于软件的性质,我们认为如果LDAP服务器支持,从LDAP中提取多个名称和地址将非常有用 我以为Active Directory会支持这一点,但它似乎根本不支持。例如,看看第5.41节和第5.42节,似乎很明显,Active directory Active Directory真的与LDAP兼容吗?,active-directory,ldap,Active Directory,Ldap,我正在为我们的一个产品(RMS)开发一个插件,它允许客户将存储在LDAP目录中的员工信息导入到应用程序中相应的人员记录中 我们的RMS允许个人记录具有多个姓名和地址(这是一个公共安全系统:此功能用于支持具有AKA和多个已知地址的个人)。由于软件的性质,我们认为如果LDAP服务器支持,从LDAP中提取多个名称和地址将非常有用 我以为Active Directory会支持这一点,但它似乎根本不支持。例如,看看第5.41节和第5.42节,似乎很明显,givenName是一个多值字段(即语法没有指定SI
givenName
是一个多值字段(即语法没有指定SINGLE-value
,并且声明“multi-value”是默认值)。这同样适用于cn
、sn
、streetAddress
,以及我费心查找的大多数其他“标准”属性
微软似乎建议他们遵守RFC 2256:
目前,Windows 2000处于活动状态
目录符合LDAP要求
通过以下RFC的支持
[RFC 2256然后列在各种“支持的”RFC中,标题为“核心LDAP需求–RFC 3377”]
声明RFC 2256实际上是8个RFC集合的一部分,这些RFC共同构成LDAPv3的完整技术规范
我感到困惑:不遵循标准属性(如givenName
等)的实际建议语法难道不构成“不合规”吗
另外,是否有人明确列出了连接和查询Active Directory与其他目录服务器(OpenLDAP、eDirectory等)之间的区别?这是一个VB6应用程序,所以我一直在使用ADSDSOObject
ADODB提供程序。起初,我认为我可以为任何目录服务器编写相同的代码,并且只要我使用标准属性,它就可以工作。但是,很明显,如果在某些实现中将同一属性定义为单值,而在其他实现中定义为多值,我将不得不编写代码来处理该场景
我开始怀疑这是否是许多具有某种“LDAP集成”的应用程序通常有一个完全独立的“Active Directory”设置页,然后是“非Active Directory的所有其他LDAP服务器”的设置的原因之一……与“合规性”相关的问题对于标准来说,很少有实体或软件在所有可能的方面都是100%兼容的。相反,在缺乏一些指导原则或规则的情况下,使用短语“compliant”通常意味着实施实体认为软件满足规范的要求
例如,以CSS级别2为例。当今大多数现代浏览器都声称是“符合CSS 2的”,但并非所有此类浏览器都100%实现了该规范。然而,用户可能会发现,在很大一部分情况下,渲染体验大致相同。因此,合规性倾向于通过以下组合来表示:
- 实现者的声明(例如,Mozilla发布声明称Firefox 3.5符合CSS 2)
- 第三方测试(如酸性测试)
这与AD和LDAP的“遵从性”非常相似。您链接的文档暗示没有任何合规性或合规性指令,因此Microsoft在此采取了(合理的,IMO)立场,“供应商声明与第三方测试套件相结合是最合适的替代方案”。从本质上说,这意味着,如果Exchange和其他声称符合LDAP的实体通过了衡量是否符合标准的测试,那么它们实际上是符合标准的 不幸的是,Active Directory破坏了许多LDAP功能,“singlevalueness”只是其中之一 我开始怀疑这是否是许多具有某种“LDAP集成”的应用程序通常有一个完全独立的“Active Directory”设置页面的原因之一 当然 是否有人明确列出了连接和查询Active Directory与其他目录服务器(OpenLDAP、eDirectory等)之间的区别
我没见过。但是,Active Directory模式在MSDN中有很好的文档记录,因此您可以随时检查差异 只有一件事我比LDAP更讨厌,那就是LotusNotesHMM。。我想“受支持”和“完全遵从”是不一样的。@Mitch Wheat:虽然我还没有“享受”到使用Lotus Notes的乐趣,但从我所听到和读到的一切来看,我想我可以有把握地说这是一个公平的说法:-)@o.k.w:事实上,列出“RFC 2256”的表格在我链接到的Microsoft文档中,标题是“核心LDAP需求–RFC3377”,因此,对于他们来说,按照RFC建议的方式实现它似乎是一件好事。啊,微软…@marc_s:它是有效的,你只需要确保持有你想要的属性的
字段
是正确的数据类型(多值字段存储为adVariant
:实际字段数据是Variant
的数组)。在VB6中,如果它是多值的,这将打印someAttribute
的所有值:如果rs(“someAttribute”).Type=adVariant且不为null(rs(“someAttribute”)),那么Debug.print Join(rs(“someAttribute”).Value,“,”
我明白你的意思,CSS和web浏览器肯定是类似问题的好例子。我想我对这个设计决策是如何在AD中产生的有点困惑:在定义模式时,必须显式地将属性定义为“单值”;默认值为“多值”,并且在LDAP规范中很少有属性实际定义为单值