Active Directory与OpenLDAP

时间:2009-06-15 17:50:15

标签: active-directory comparison ldap openldap

这两种LDAP协议实现之间的主要区别是什么?对于异构环境哪个更好?关于这个主题的任何好网站?

2 个答案:

答案 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要求   微软。“

这些是主要的一些,但还有其他一些。

相关问题