LDAP Setup

以下是构建访问 LDAP 目录服务器的 Java 应用程序所涉及的步骤。

  • 安装Java Platform软件。

  • 按照earlier的说明获取 Directory Server 软件。

  • 使用所需的架构配置 Directory Server。为了使用本教程中的示例,需要在服务器上配置一个特殊的schema

  • 用所需的内容填充目录服务器。为了使用本教程中的示例,需要在服务器上填充一个特殊的content

  • 编写一个 JNDI 应用程序以访问 Directory,对 Directory Server 进行编译和运行以获取所需的结果。 JNDI 示例在下一个lesson中介绍。

上一节介绍了前两个步骤。本类的其余部分讨论步骤 3 和步骤 four 的一部分。在下一课中将介绍涉及编写 JNDI 应用程序的 5 *步骤,该步骤显示了如何编写 JNDI 应用程序以对目录执行各种操作。

设置目录或指示程序与现有目录进行通信之后,您希望在其中找到哪种信息?

该目录可以视为由名称到对象的绑定组成。也就是说,目录中的每个对象都有一个对应的名称。您可以通过查找对象的名称来检索目录中的对象。

属性也存储在目录中。目录中的对象除了具有名称之外,还具有可选的一组属性。您可以要求目录提供对象的属性,也可以要求目录搜索具有某些属性的对象。

步骤 3:目录架构

Pattern 指定目录可能包含的对象的类型。本教程使用条目填充目录,其中一些条目需要特殊的架构定义。要容纳这些条目,必须首先关闭服务器中的架构检查,或者将本教程随附的架构文件添加到服务器。这两个任务通常由目录服务器的 管理 员执行。

本教程带有两个必须安装的架构文件:

这些文件的格式是一种正式描述,可能无法直接复制并粘贴到服务器配置文件中。具体而言,属性语法以RFC 2252进行描述。

不同的目录服务器具有不同的配置 Pattern 的方式。本教程包括一些用于在目录服务器上安装 Java 和 CORBAPattern 的工具,这些工具允许通过 LDAP 修改其 Pattern。以下是工具可执行的任务列表。

请按照随附的README file中的说明运行这些程序。


注意:Windows Active Directory. Active Directory 通过使用内部格式来 管理 其架构。要更新架构,可以按照 Active Directory 的说明使用 Active Directory管理 控制台 管理 单元ADSIEditCreateJavaSchemaUtil。


步骤 4:为本教程提供目录内容

在此跟踪的示例中,显示的结果反映了如何使用本教程随附的配置文件(tutorial.ldif)设置 LDAP 目录。如果使用的是现有服务器或设置不同的服务器,则可能会看到不同的结果。在将配置文件(tutorial.ldif)加载到目录服务器之前,必须遵循更新服务器架构的说明,或者可以使用* ldapadd ldapmodify *命令(如果在 UNIX 系统上可用)。

例如,使用 ldapmodify 可以做到(通过为主机名,管理 员 DN(-D 选项)和密码插入适当的值):

ldapmodify -a -c -v -h hostname -p 389\
        -D "cn=Administrator, cn=users, dc=xxx, dc=xxx"\
        -w passwd -f tutorial.ldif

安装注意:访问控制. 不同的目录服务器对访问控制的处理方式不同。本教程中的一些示例对目录进行更新。同样,您在本教程中安装的名称空间部分可能具有读取访问限制。因此,您需要采取特定于服务器的操作,以使目录可读和/或可更新,以使这些示例正常工作。对于Oracle 目录服务器,请将sunds.aci.ldif文件中建议的aci条目添加到dn: o=JNDITutorial条目中,以使整个目录可读且可更新。或者,您可以更改示例,以便它们对目录进行身份验证。 Security类中介绍了如何执行此操作的详细信息。

安装注意:命名空间设置. tutorial.ldif文件中的条目使用专有名称(DN)“ o = JNDITutorial”作为根命名上下文。如果尚未将目录服务器配置为具有“ o = JNDITutorial”作为根命名上下文,则try导入tutorial\.ldif将失败。解决此问题的最简单方法是将现有的根命名上下文的 DN 添加到tutorial\.ldif文件中的每个“ dn:”行。例如,如果您的服务器已经具有根命名上下文“ dc = imc,dc = org”,则应更改该行

dn: o=JNDITutorial

to

dn: o=JNDITutorial, dc=imc, dc=org

对文件中以“ dn:”开头的每一行进行此更改。然后,在本教程的所有示例中,无论在何处使用“ o = JNDITutorial”,都应改为使用“ o = JNDITutorial,dc = imc,dc = org”。

安装注意:文件格式. 根据所使用的 os 平台,可能需要编辑tutorial\.ldif,以便它包含该平台的正确换行符。例如,如果您发现tutorial\.ldif包含 Windows 样式的换行符(CRLF),并且正在将该文件导入到在 UNIX 平台上运行的目录服务器中,则需要编辑该文件并将 CRLF 替换为 LF。此问题的症状是目录服务器拒绝tutorial\.ldif中的所有条目。

安装说明:Windows Active Directory.

  • 根命名上下文将不会是“ o = janditutorial”。格式为“ dc = x,dc = y,dc = z”。您需要遵循前面的“命名空间设置”说明。

  • 通过使用 Active Directory管理 控制台 管理 单元ADSIEdit,将“ inetOrgPerson”和“ groupOfUniqueNames”对象类的对象类和相关属性添加到 Active Directory 架构中。 “ groupOfUniqueNames”在RFC 2256中定义,“ inetOrgPerson”在RFC 2798中定义。

  • 默认情况下,Active Directory 中不允许使用本教程使用的某些层次关系。要启用这些关系,请使用 Active Directory管理 控制台 管理 单元ADSIEdit添加它们。

objectclass: organizationalUnit
possible superiors: domainDNS
                    inetOrgPerson
                    organizaton
                    organizationalPerson
                    organizationalUnit
                    person
                    top

objectclass: groupOfUniqueNames
possible superiors: top

objectclass: inetOrgPerson
possible superiors: container
                    organizationalPerson
                    person
                    top
  • tutorial\.ldif中的“马克吐温”条目中删除两个“ sn”属性之一。与RFC 2256相反,Active Directory 将“ sn”定义为单值属性。

  • 使用ldifde命令行 Util 加载修改后的tutorial\.ldif文件。

# ldifde -i -v -k -f tutorial.ldif
  • 大多数示例都假定已将目录设置为允许未经身份验证的读取和更新访问。您的 Active Directory 安装程序可能不允许您执行此操作。请参阅《访问控制》安装说明。

  • 读取条目有时会产生比教程中显示的更多的属性,因为 Active Directory 通常会返回一些内部属性。

  • 条 Object 创建可能需要指定其他特定于 Active Directory 的属性或使用其他对象类。