代码之家  ›  专栏  ›  技术社区  ›  Migol

Active Directory与OpenLDAP

  •  27
  • Migol  · 技术社区  · 17 年前

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

    2 回复  |  直到 9 年前
        1
  •  14
  •   dolmen    13 年前

    对于异构环境,您希望使用通用服务器,如OpenLDAP。AD的优点通常是它已经包含了内部用户的用户帐户-这些帐户可以与单独的LDAP服务器保持同步,尽管这增加了复杂性。

    至于协议的细节,Oracle虚拟目录的文档有一个很好的总结。(OVD是一种产品,可以用来代理广告,并将其一些特性转换为更标准的接口。):

    http://download.oracle.com/docs/html/E10286_01/app_bundled_plugins.htm#CHDGDBBG

    范围属性 属性 在Active Directory和Adam中 然后返回1000个值 时间的名称包括 返回的值的范围(或 1500表示Windows 2003)。范围是 以以下形式返回给客户: 成员;1-1000:为了 获取下千个条目, 客户端应用程序必须知道 重复查询并请求 属性成员;1001-2000。这个 需要处理应用程序 中的Microsoft Active Directory 与其他方法相比的特殊方法 目录产品。

    密码更新 微软 Active Directory和Adam有特殊的 关于密码的规则 可以使用LDAP更新用户:

    • 密码只能通过安全的SSL连接更新。
    • 如果用户正在更新自己的密码,则原始密码必须 包含在修改删除中 新密码是修改外接程序 相同的修改操作。
    • 只有管理员可以在不知道 以前的密码。
    • active directroy不使用userpassword属性,它使用 unicodepwd属性(即 quoted-UTF16-hex-padded-base64 encoded )

    对象类映射 大多数LDAP 目录使用inetOrgPerson和 GroupOfUniqueNames的对象类 用户和组。Microsoft活动 目录使用用户和组 具有特定属性的对象类 到Active Directory NOS要求 微软的。”

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

        2
  •  52
  •   Pedro Baracho    9 年前

    以下是我头脑中的一些分歧。OpenLDAP可以被称为通用LDAP服务器,类似于许多其他供应商的LDAP服务器(Fedora DS 389、Oracle Internet Directory、IBM Tivoli Directory Server)。对于Microsoft产品套件(即:运行Microsoft域),Active Directory有点自定义。各有利弊。

    OpenLDAP在安装后为空,没有结构(称为DIT)。它甚至没有一个根条目。广告将提供一个基本的结构,并为您准备好了GUI工具来填充用户。OpenLDAP和其他人希望您手工创建DIT,因此您必须设计一个结构。因此,如果您的项目涉及到这样的事情,那么您必须计划好将用户、组、角色放在哪里,并考虑到ACL或分支委托。例如,您可能拥有widgets.com的域。在广告中,装运的结构将如下所示:

    + dc=widgets,dc=com
    |-- cn=Computers
    |-- cn=Users
    |-- cn=Groups
    

    在OpenLDAP(或其他普通实现)中,您可以用多种方式设计您的DIT。您可以遵循域组件(dc=foo,dc=bar)约定,也可以使用按地理区域组织的内容(o=foo,c=bar)。这并不重要,但你应该和他们一起去。AD使用DC约定,不给您选择,但是其他LDAP服务器可以遵循这两种约定。如果你想适应一个大的MS领域,为了一致性和易于集成,我会坚持使用DC约定。但在这个例子中,我们将假设我们的公司组织(o)位于一个没有地区或单位(ou)的国家(c):

    + o=widgets,c=us
    |-- cn=Machines
    |-- cn=People
    |-- cn=Groups
    |-- cn=Roles
    

    然后,如果需要,您可以扩展您的模式。如果您想扩展您的AD模式,AD将要求您通过Active Directory模式编辑器mmc控制台插件(生成自定义mmc)添加模式元素。在那之后,事情很简单。首先定义属性,然后定义对象类。openldap要求您编写一个ldif(首先还需要属性,然后是objectclasses)。或者使用apache directory studio和openldap,这是一个很棒的图形用户界面和管理工具,使openldap更易于使用。

    广告不允许你匿名查询389上的所有信息。如果您想要获得模式信息(称为目录),您必须查询3289并进行身份验证。这让我想起LDAP的DIB和DIT隐藏,但我不知道AD是否在这里做同样的事情。

    AD的默认查询限制为10000。如果您想一次完成所有任务,您必须在客户端或代码中使用分页控件,或者修改正在搜索的域控制器上的默认查询限制。请注意,分页控件可能有问题。我用Netscape库让他们在Java中工作,但一些LDAP客户端似乎不工作正常,即使他们声称他们支持分页控件(YMMV)。

    广告的认证有点奇怪。您可以使用电子邮件格式的用户名(-d username@domain)进行身份验证,也可以使用完整的用户DN。如果在OpenLDAP中有一种方法可以做到这一点,我不知道该怎么做,但我不会费心。与其他LDAP服务器相比,这很奇怪。普通LDAP通常遵循DN格式(cn=username,cn=users,o=widgets,c=us)。

    我想简而言之,广告是固执己见的,OpenLDAP是通用的。因此,广告很容易站起来,但OpenLDAP可以更灵活。