文档

Java™教程
隐藏目录
LDAP设置
路径:Java命名和目录接口
课程:软件设置

LDAP设置

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

  1. 安装Java平台软件。
  2. 获取先前讨论的目录服务器软件。
  3. 配置目录服务器以使用所需的架构。为了使用本教程中的示例,需要在服务器上配置一个特殊的架构。
  4. 将目录服务器填充为所需的内容。为了使用本教程中的示例,需要在服务器上填充一个特殊的内容。
  5. 编写一个JNDI应用程序来访问目录,编译并在目录服务器上运行它以获得所需的结果。 JNDI示例将在下一节中介绍。

前两个步骤在上一节中已经涵盖。本课程的其余部分将讨论第三步和第四步的一部分。第五步涉及编写JNDI应用程序的内容将在下一课中介绍,该课程将展示如何编写JNDI应用程序来执行目录上的各种操作。

一旦您设置了目录,或者将程序指向与现有目录进行通信,您可以在那里找到什么样的信息呢?

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

目录中还存储了属性。目录中的对象除了有一个名称之外,还有一组可选的属性。您可以询问目录对象的属性,以及要求它搜索具有特定属性的对象。

步骤3:目录架构

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

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

这些文件的格式是一个正式的描述,可能无法直接复制和粘贴到服务器配置文件中。具体来说,属性语法是根据RFC 2252描述的。

不同的目录服务器有不同的配置模式。本教程提供了一些工具,用于在支持通过LDAP修改其模式的目录服务器上安装Java和CORBA模式。以下是工具可以执行的任务列表。

  1. 创建Java模式
  2. 创建CORBA模式

请按照附带的 README文件 中的说明来运行这些程序。


注意:Windows Active Directory。 Active Directory通过使用内部格式来管理其模式。要更新模式,您可以使用Active Directory Management Console插件ADSIEditCreateJavaSchema实用程序,并按照Active Directory的说明进行操作。


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

本教程的示例中显示的结果反映了使用随附本教程的配置文件( tutorial.ldif )设置的LDAP目录的情况。如果您正在使用现有服务器或具有不同设置的服务器,则可能会看到不同的结果。在将配置文件( tutorial.ldif )加载到目录服务器之前,您必须按照更新服务器模式的说明进行操作,或者如果UNIX系统上有ldapaddldapmodify命令,您可以使用它们。

例如,使用ldapmodify,您可以执行以下操作(根据主机名、管理员DN(-D选项)和密码填入适当的值):

ldapmodify -a -c -v -h 主机名 -p 389\
        -D "cn=Administrator, cn=users, dc=xxx, dc=xxx"\
        -w 密码 -f tutorial.ldif

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

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

dn: o=JNDITutorial

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

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

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

安装注意事项:Windows Active Directory。

  1. 根命名上下文不会是"o=jnditutorial"。它将采用"dc=x,dc=y,dc=z"的形式。你需要按照前面的命名空间设置注意事项进行操作。
  2. 使用Active Directory管理控制台插件ADSIEdit,为"inetOrgPerson"和"groupOfUniqueNames"对象类添加对象类和相关属性。"groupOfUniqueNames"在RFC 2256中定义,"inetOrgPerson"在RFC 2798中定义。
  3. 教程中使用的一些层次关系在默认情况下在Active Directory中是不允许的。要启用这些关系,请使用Active Directory管理控制台插件ADSIEdit添加它们。
    objectclass: organizationalUnit
    possible superiors: domainDNS
                        inetOrgPerson
                        organization
                        organizationalPerson
                        organizationalUnit
                        person
                        top
    
    objectclass: groupOfUniqueNames
    possible superiors: top
    
    objectclass: inetOrgPerson
    possible superiors: container
                        organizationalPerson
                        person
                        top
    
  4. 从"tutorial.ldif"文件的Mark Twain条目中删除两个"sn"属性中的一个。Active Directory将"sn"定义为单值属性,与RFC 2256不符。
  5. 使用ldifde命令行实用程序加载修改后的tutorial.ldif文件。
    # ldifde -i -v -k -f tutorial.ldif
    
  6. 大多数示例假设目录已经设置为允许未经身份验证的读取和更新访问。你的Active Directory设置可能不允许你这样做。请参阅访问控制安装注意事项。
  7. 读取条目有时会产生比教程中显示的更多属性,因为Active Directory通常返回一些内部属性。
  8. 创建条目可能需要指定其他Active Directory特定属性或使用其他对象类。

上一页: 软件安装
下一页: Java 应用设置