这两种LDAP协议实现之间的主要区别是什么?对于异构环境哪个更好?关于这个主题的任何好网站?
答案 0 :(得分:53)
以下是我所知道的一些不同之处。 OpenLDAP可以称为通用LDAP服务器,类似于许多其他供应商的LDAP服务器(Fedora DS 389,Oracle Internet Directory,IBM Tivoli Directory Server)。 Active Directory更适合Microsoft产品套件(即:运行Microsoft域)。各有利弊。
OpenLDAP在安装后为空,没有结构(称为DIT)。它甚至没有开箱即用的根条目。 AD将提供基本结构,并且已准备好GUI工具以开始填充用户。 OpenLDAP和其他人希望您手动创建DIT,因此您必须设计一个结构。因此,如果您的项目涉及到类似的内容,那么您必须计划将用户,组,角色放在哪里以及考虑ACL或分支委派。例如,您可能拥有widgets.com的域名。在AD中,发布的结构将如下所示:
+ dc=widgets,dc=com
|-- cn=Computers
|-- cn=Users
|-- cn=Groups
在OpenLDAP(或其他vanilla实现)中,您可以通过多种方式设计DIT。您可以遵循域组件(dc = foo,dc = bar)约定,也可以使用按地理区域组织的内容(o = foo,c = bar)。这一点并不重要,但你应该选择其中一个。 AD使用DC约定,但不提供选择,但其他LDAP服务器可以遵循任一约定。如果你想要适应一个大的MS域,我会坚持使用DC约定来保持一致性和易于集成。但是对于这个例子,我们假装我们公司组织(o)在一个国家(c)没有地区或单位(ou):
+ o=widgets,c=us
|-- cn=Machines
|-- cn=People
|-- cn=Groups
|-- cn=Roles
然后,如果需要,您可以扩展您的架构。如果要扩展AD架构,AD将要求您通过Active Directory架构编辑器MMC控制台插件添加架构元素(创建自定义MMC)。在那之后,它非常简单。首先定义属性,然后定义对象类。 OpenLDAP要求您编写LDIF(首先需要属性,然后是对象类)。或者将Apache Directory Studio与OpenLDAP一起使用,这是一个非常棒的GUI和管理工具,使OpenLDAP近AD易于使用。
AD不允许您匿名查询389上的所有内容。如果要获取架构信息(称为目录),则必须在3289上进行查询并进行身份验证。这让我想起了LDAP的DIB与DIT隐藏,但我不知道AD是否试图在这里做同样的事情。
AD的默认查询限制为10,000。如果您想一次性吸取所有内容,则必须在客户端或代码中使用分页控件,或修改您正在搜索的域控制器上的默认查询限制。请注意,分页控件可能会有问题。我让他们使用Netscape库在java中工作,但是一些LDAP客户端似乎无法正常工作,即使他们声称它们支持分页控件(YMMV)。
AD的身份验证有点奇怪。您可以通过电子邮件格式化用户名(-D username @ domain)进行身份验证,也可以使用完整的用户DN。如果有办法在OpenLDAP中执行此操作,我不知道该怎么做但我不会打扰。与其他LDAP服务器相比,这很奇怪。普通LDAP通常遵循DN格式(cn = username,cn = Users,o = widgets,c = us)。
我想简而言之,AD是自以为是,OpenLDAP是通用的。因此,AD很容易站起来,但OpenLDAP可以更灵活。
答案 1 :(得分:14)
对于恶性环境,您希望使用通用服务器,例如OpenLDAP。 AD的优势通常在于它已经包含了内部用户的用户帐户 - 这些帐户可以与单独的LDAP服务器保持同步,但这会增加复杂性。
就协议的细节而言,Oracle虚拟目录的文档有一个很好的总结。 (OVD是一种可用于代理AD并将其一些怪癖转换为更标准接口的产品。):
http://download.oracle.com/docs/html/E10286_01/app_bundled_plugins.htm#CHDGDBBG
测距属性属性 在Active Directory和ADAM中有更多 然后在1000处返回1000个值 一个名字包含的时间 返回的值范围(或 1500 for Windows 2003)。范围是 以下列形式返回给客户: 成员; 1-1000:somevalue为了 获得下一千个条目, 客户端应用程序必须知道 重复查询并请求 属性成员; 1001-2000。这个 要求应用程序处理 Microsoft Active Directory中的 特殊方式与其他相比 目录产品。
密码更新 Microsoft Active Directory和ADAM有特殊之处 关于如何密码的规则 用户可以使用LDAP进行更新:
- 密码只能通过安全的SSL连接进行更新。
- 如果用户正在更新自己的密码,则必须使用原始密码 包含在修改删除中 新密码是修改添加 相同的修改操作。
- 只有管理员可以在不知道的情况下重置用户的密码 以前的密码。
- Active Directroy不使用userPassword属性,它使用 unicodePwd属性(即 quoted-UTF16-hex-padded-base64 encoded)。
ObjectClass Mapping 大多数LDAP 目录使用inetOrgPerson和 groupOfUniqueNames对象类 用户和组。 Microsoft Active 目录使用用户和组 具有特定属性的objectClasses 到Active Directory NOS要求 微软。“
这些是主要的一些,但还有其他一些。