Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Active directory Active Directory真的与LDAP兼容吗?_Active Directory_Ldap - Fatal编程技术网

Active directory Active Directory真的与LDAP兼容吗?

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

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

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

我以为Active Directory会支持这一点,但它似乎根本不支持。例如,看看第5.41节和第5.42节,似乎很明显,
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规范中很少有属性实际定义为单值