| |
| Sun Java(TM) System Directory Server 5.2 2005Q1 管理指南 | |
第 1 章
Directory Server 管理概述Directory Server 产品包括一个 Directory Server、一个用于管理多个目录的 Administration Server 和一个通过图形界面管理这两台服务器的 Server Console。本章概括地介绍有关 Directory Server 的信息以及管理目录服务时所需的最基本操作。
验证插件签名是一种附加安全功能,它允许服务器检测或防止加载未经授权的插件。目录服务器标记语言 (DSML) 是一种新的基于 XML 的格式,用于将请求发送到目录服务器。
本章包含以下小节:
Directory Server 管理概述Directory Server 是一种强大且具伸缩性的服务器,用于管理企业范围内的用户和资源目录。它基于名为轻型目录访问协议 (LDAP) 的开放系统服务器协议。Directory Server 作为计算机上的 ns-slapd 进程或服务运行。该服务器管理目录内容并对客户机请求作出响应。
Administration Server 是由 Sun Java System 提供的辅助服务器,用于帮助您管理 Directory Server(以及其他 Sun Java System 服务器),通过它,您可以执行大多数 Directory Server 管理任务。Server Console 是 Administration Server 的图形界面。Directory Server Console 是 Server Console 的一部分,专门为与 Directory Server 一起使用而设计。
通过 Directory Server Console 可以执行大多数 Directory Server 管理任务。您也可以通过编辑配置文件或使用命令行实用程序来手动执行管理任务。有关 Server Console 的详细信息,请参见 Administration Server Administration Guide。
注
如果正在使用 Sun Cluster HA for Directory Server 数据服务,那么通过命令行管理 Directory Server 时,必须使用 directoryserver(1M) 命令及其子命令。
不要直接使用独立脚本和二进制数据。
启动和停止 Directory Server如果目前没有使用安全套接字层 (SSL),则可以使用这里列出的方法启动和停止 Directory Server。如果正在使用 SSL,请参见在启用 SSL 的情况下启动服务器。
通过命令行启动和停止服务器
要通过命令行启动或停止服务器,请运行以下命令:
或者
只有当 Directory Server 5.2 不是默认版本时,才需要 useversion 选项。有关 directoryserver 命令的完整语法,请参见 Directory Server Man Page Reference。
如果将超级用户指定为 Directory Server UID,则必须以超级用户身份来运行这些命令。
否则,必须以超级用户身份来运行这两个命令,或者使用与 Directory Server 相同的 UID 和 GID 来运行这两个命令。例如,如果以 nobody 运行 Directory Server,则必须也以 nobody 运行 start 和 stop 实用程序。
对于使用 Directory Server 早期版本的用户,请注意在引用模式下启动服务器将不再可行。您可以使用 Directory Server Console 设置全局引用。设置默认引用中对此过程进行了说明。
通过控制台启动和停止服务器
当 Directory Server Console 正在运行时,可以通过其图形界面启动、停止和重新启动 Directory Server。有关运行控制台的说明,请参见启动 Directory Server Console。
通过 Directory Server Console 成功地启动或停止 Directory Server 后,控制台将显示一个消息对话框,说明已启动或关闭服务器。在出现错误的情况下,控制台将显示与错误相关的所有消息。
在启用 SSL 的情况下启动服务器
启用 SSL 之前,必须在服务器上安装和配置证书。有关管理证书和启用 SSL 的说明,请参见第 11 章“管理验证和加密”有关证书、证书数据库和获取服务器证书的信息,请参见 Administration Server Administration Guide。
要在启用 SSL 的情况下启动服务器,必须通过命令行启动服务器,并提供保护服务器证书的密码。
或者,可以创建密码文件来存储证书密码。通过将证书数据库的密码存放在一个文件中,便可以通过服务器控制台启动服务器,还可以允许服务器在无人看管状态下运行时,自动地重新启动。
必须将此密码文件放在以下位置:
ServerRoot/alias/slapd-serverID-pin.txt
其中 serverID 是安装服务器时为其指定的标识符。
在此文件中包括如下的安全令牌名及其密码:
tokenName:password
此示例中显示了内部证书数据库的设备名称(大写和空格必须完全与显示的一致):
Internal (Software) Token:password
如果将证书存储在备用设备上,请使用“管理证书对话框”顶部的下拉菜单中显示的设备名称。要创建证书数据库,必须使用 Administration Server 和“证书设置向导”。
如果要在启用 SSL 的情况下启动服务器,但禁止服务器侦听非 SSL 端口,则可以将 nssldap-listenhosts 设置为回送地址 127.0.0.1。或者,也可以将 nsslapd-port 属性设置为 0,尽管这样做可能会中断某些管理脚本,如 monitor、db2bak.pl 和 ldif2db.pl。
有关在 Directory Server 中使用 SSL 的信息,请参见第 11 章“管理验证和加密”。
在小于 1024 的端口上以非超级用户身份启动服务器
通常,如果端口小于 1024,您必须是超级用户才能启动 Directory Server。在以下过程中,您可以使用指定的非超级用户。
- 安装 Directory Server 和 Administration Server。在配置服务器时,确保这两个服务器的用户为超级用户。
使用 Java Enterprise System 安装指南中的安装说明。
- 停止 Directory Server。请参见启动和停止 Directory Server。
- 在 ServerRoot 目录中运行以下命令,将目录和文件拥有权更改为所需的 userID。
chown -R userID:groupID slapd-hostname
chown -R userID:groupID alias/slapd-hostname-*.db
- 编辑 dse.ldif 文件,将 nsslapd-localuser 值由 root 更改为所需的 userID。
- 重新启动 Directory Server。请参见启动和停止 Directory Server。
使用 Directory Server ConsoleDirectory Server Console 是一个界面,可以作为 Server Console 的一个独立窗口对其进行访问。可以从 Server Console 启动 Directory Server Console,其步骤如下。
启动 Directory Server Console
- 检查 Directory Server 守护进程 slapd-serverID 是否正在运行。如果没有运行,请以超级用户或管理用户身份输入以下命令来启动它:
- 检查 Administration Server 守护进程 ns-httpd 是否正在运行。如果没有运行,请以超级用户或管理用户身份输入以下命令来启动它:
如果在未安装 Administration Server 的计算机上运行 Server Console,则可能需要在 Administration Server 上配置连接限制,如 Administration Server Administration Guide 中所述。
屏幕上将显示“控制台”登录窗口。或者,如果您的配置目录(即包含 o=NetscapeRoot 后缀的目录)存储在单独的 Directory Server 实例中,那么屏幕上将显示一个窗口,要求您输入管理员用户 DN 和密码,以及该目录服务器的 Administration Server 的 URL。
- 使用具有足够访问权限的用户绑定 DN 和密码登录。
屏幕上将显示 Server Console。
- 浏览左面板中的树,找出 Directory Server 所在的主机,然后单击此计算机的名称或图标来显示其常规属性。
图 1-1 Sun Java System Server Console
要编辑 Directory Server 的名称和说明,请单击“编辑”按钮。在文本框中输入新的名称和说明。单击“确定”设置新名称和说明。名称将显示在左侧的树中,如上图所示。
- 在树中双击 Directory Server 的名称或单击“打开”按钮,以显示用于管理此目录服务器的 Directory Server Console。
浏览 Directory Server Console
Directory Server Console 提供了界面,用于浏览 Directory Server 实例并执行管理操作。其中,始终显示四个选项卡,通过这些选项卡您可以访问所有 Directory Server 功能:
“任务”选项卡
打开 Directory Server Console 时,看到的第一个界面就是“任务”选项卡。其中所包含的按钮可用于执行各种主要的管理任务(如启动或停止 Directory Server),如下图所示。要查看所有任务及其对应按钮,可能需要滚动浏览整个列表。
图 1-2 Directory Server Console 的“任务”选项卡
必须以具有管理员权限的用户身份登录,才能执行这些任务。对于没有足够权限的用户,任务按钮将不可见。
“配置”选项卡
Directory Server Console 的“配置”选项卡提供了界面和对话框,用于查看和修改各种目录设置(如后缀、复制、模式、日志和插件的目录设置)。只有在以具备管理员权限的用户身份登录时,这些对话框才可用或生效。
此选项卡左侧包含一个带有所有配置功能的树,右侧则显示专用于管理各个功能的界面。这些界面通常包含其他选项卡、对话框或弹出窗口。例如,下图显示了整个目录的常规设置。
图 1-3 Directory Server Console 的“配置”选项卡
当在左侧树中选择某个可配置的项时,该项的当前设置会显示在右面板的一个或多个选项卡中。要了解这些设置的说明和行为,请参见本指南中具体介绍各项功能的章节。根据设置情况,某些更改会在保存时立即生效,而某些更改则要在重新启动服务器后才会生效。当需要重新启动服务器时,控制台将显示一个对话框通知您。
选项卡名称旁的红色标记表示该选项卡中的更改尚未保存。即使在配置另一项或查看其他主要选项卡时,未保存的更改仍会保留在该选项卡中。“保存”和“复位”按钮适用于给定配置项的所有选项卡,但不影响其他项的未保存设置。
大多数文本字段仅允许按该设置的正确语法输入值。默认情况下,如果值的语法不正确,则该设置的标签和您输入的值将会以红色突出显示。在所有设置的语法均有效之前,“保存”按钮将被禁用。可以选择以斜体突出显示不正确的值,如可视配置首选项中所述。
“目录”选项卡
控制台的“目录”选项卡以树的形式显示目录条目,以方便浏览。在此选项卡中,可以浏览、显示和编辑所有条目及其包含的属性。
注
如果计划浏览包含数千个条目的列表,请创建浏览索引,以便进行快速访问。有关说明,请参见用于控制台的浏览索引。
图 1-4 Directory Server Console 的“目录”选项卡
如果登录期间给定的绑定 DN 具有足够的访问权限,那么配置条目将被视为普通条目,可以直接进行修改。不过,若要安全地更改配置设置,则应始终使用“配置”选项卡上的可用对话框。
“视图”菜单下的几个可用选项可以用来更改“目录”选项卡的布局和内容。新的布局选项包括在单个树中查看所有条目(包括叶条目),以及在右侧窗格中显示属性。默认设置是在右侧查看叶条目,而不是在左侧的树中查看。
“视图”>“显示”选项为目录树中的所有条目启用 ACI 计数、角色计数和停用状态图标。在图 1-4 中,ACI 计数和叶条目显示在左侧树中,而选定条目的属性值显示在右侧窗格中。有关详细信息,请参见目录树视图选项。
注
如果在“目录”选项卡的左窗格中操作时,看到黄色三角形,则表明发生了错误。有关所遇到错误的详细信息,请参见 Directory Server Console 的“状态”选项卡中的访问日志。如果在右窗格中操作时遇到了错误,则看不到错误警告。
“状态”选项卡
“状态”选项卡显示服务器统计信息和日志消息。左侧树中列出了全部状态项;选定某项后,该项的内容会显示在右侧窗格中。例如,下图显示了一个日志条目表。
图 1-5 Directory Server Console 的“状态”选项卡
通过控制台查看当前绑定 DN
单击显示屏左下角的登录图标,可以查看登录到 Directory Server Console 时使用的绑定 DN。当前绑定 DN 将显示在登录图标旁,如下所示:
更改登录身份
在通过 Directory Server Console 创建或管理条目时,以及在第一次访问 Server Console 时,可以选择通过提供绑定 DN 和密码来登录。这将识别访问此目录树的用户身份,并确定其用以执行操作的访问权限。
第一次启动 Server Console 时,可以使用目录管理员 DN 登录。您可以随时选择以其他用户身份登录,而无需停止并重新启动控制台。
要更改登录到 Server Console 的用户身份,请执行以下操作:
使用联机帮助
联机帮助为 Directory Server Console 中大部分选项卡和对话框提供上下文相关的信息。“帮助”按钮通常位于这些界面的右下角。在任何屏幕上,调用上下文相关帮助的键盘快捷键总是 Alt-P。
调用联机帮助将在控制台的内置浏览器中显示一个基于 HTML 的页面。在该页面中,可以单击“在浏览器中启动”按钮,以便在外部浏览器(如 Mozilla)中打开相同的页面。在联机帮助中,指向更进一步信息的链接也会打开一个外部浏览器窗口。
每个联机帮助页面都对相应的选项卡或对话框中的字段和按钮进行说明。当通过控制台解释、输入或修改值时,请在该信息的指导下完成。
Directory Server 的帮助系统取决于 Administration Server。如果正在 Administration Server 的远程计算机中运行 Directory Server Console,则需要验证以下内容:
- 可能需要配置在 Administration Server 上强制实施的连接限制,以便允许对您的计算机进行访问,如 Administration Server Administration Guide 中所述。
- 如果希望使用外部浏览器查看联机帮助页,且浏览器配置为使用代理,则必须执行以下操作之一:
控制台剪贴板
Directory Server Console 使用系统剪贴板来复制、剪切和粘贴文本。在“目录”选项卡中浏览时,可以将条目的 DN 或 URL 复制到剪贴板中以减少键入:
在打开对话框或其他选项卡之前(您需要在其文本字段中粘贴 DN 或 URL),请执行以下操作:
控制台设置
Directory Server Console 提供许多设置,用于定制信息在“配置”和“目录”选项卡中的显示方式。
可视配置首选项
当在顶级“配置”选项卡上的字段中修改配置参数和输入值时,Directory Server Console 使用彩色文本表示有效的输入。例如,如果启用了一个功能,该功能要求输入更详细的配置值,则所需字段的标签将显示为红色,在您输入了有效值之后,则变为蓝色。
默认情况下,控制台会使用红色和蓝色,但您可以使用以下方法修改此设置:
- 在 Directory Server Console 的任意选项卡上,选择“编辑”>“首选项”菜单项。在“控制台首选项”对话框中,选择“其他”选项卡。
- 为希望的可视配置指示符选择相应的单选按钮。可以选择彩色字体或字体外观(或两者)。
- 有关“控制台首选项”对话框的其他选项卡上设置的说明,请参见 Administration Server Administration Guide。
然后单击“确定”以保存更改。
- 退出 Server Console 的所有窗口,然后重新启动控制台。
目录树视图选项
在 Directory Server Console 的顶级“目录”选项卡上,“视图”菜单中的各项允许您在目录树中显示其他信息,并选择要在右面板中出现的内容。
以下“视图”选项会影响“目录”选项卡的内容:
- 遵循引用——选中此复选框时,目录树将显示条目和引用目标的所有子级,如同它们在目录中一样。如果未选中该复选框,则引用显示为引用条目。有关详细信息,请参见创建智能引用。
- 排序对象——如果未选中此复选框,则按服务器返回条目的顺序显示条目。选中此复选框时,目录树中同一级的条目按下面说明的显示属性排序。有关如何在不影响服务器性能的情况下,对大型子树进行排序的详细信息,请参见用于控制台的浏览索引。
- “显示”>“ACI 计数”——如果 aci 属性中包含一条或多条访问控制指令 (ACI),目录树将在条目的旁边显示指令的数量。有关详细信息,请参见第 6 章“管理访问控制”
- “显示”>“角色计数”——如果条目是一个或多个角色的成员,则该目录树将显示条目内的角色数量。有关详细信息,请参见分配角色。
- “显示”>“停用状态”——如果某个用户或组条目已经被停用以防绑定到服务器,则目录树将显示一个红框和穿过该条目图标的线条。有关详细信息,请参见停用和激活用户和角色。
- “布局”>“查看子级”——选择此布局选项时,左面板中的树不显示目录的叶条目,在左面板中选择父节点可在右面板中显示其所有子节点,包括叶条目。在这两个面板中都可选择条目。
- “布局”>“仅查看树”—— 采用该布局选项,“目录”选项卡仅有一个面板显示包含目录中所有条目的树。
- “布局”>“查看属性”——在该布局中,左面板显示包含目录中所有条目的树,而右面板显示存储在树中选定的条目中的属性和值。
- “显示属性”——单击此菜单项,打开“显示属性”对话框,选择“目录”选项卡中显示的条目的标签。默认情况下,标签为条目的第一个 RDN 属性的值(例如 People)。对于不具有 RDN 的基本条目,标签为整个 DN(例如 dc=example,dc=com)。
配置 LDAP 参数LDAP 参数是目录服务器中的基本设置,如目录管理员的标识名 (DN)、全局只读设置、端口配置以及跟踪所有目录修改时间的功能。
配置目录管理员
目录管理员是具有特权的服务器管理员,与 UNIX 中的 root 用户相似。访问控制不适用于以 Directory Manager 身份定义的条目。此条目的首次定义应该在安装过程中完成。默认值为 cn=Directory Manager。
目录管理员的 DN 存储在 nsslapd-rootDN 属性中,而密码存储在 cn=config 分支的 nsslapd-rootpw 属性中。
可使用 Directory Server Console 更改目录管理员 DN 和密码以及用于此密码的存储模式:
- 请以目录管理员身份登录至控制台。
如果您已经登录至控制台,有关如何以其他用户身份登录的说明,请参见更改登录身份。
- 在顶级“配置”选项卡上,选择导航树根的服务器节点,然后在右面板中选择“设置”选项卡。
- 在“目录管理员 DN”字段中输入新的标识名。默认值为安装过程中定义的值。
- 在“管理员密码加密”下拉菜单中,选择服务器要使用的目录管理员密码的存储模式。
- 请使用提供的文本字段输入并确认新密码。
- 单击“保存”。
更改 Directory Server 端口号
使用 Directory Server Console 或在 cn=config 条目下更改 nsslapd-port 或 nssldap-secureport 属性的值,可以修改用户目录服务器的端口号或安全端口号。
如果要修改包含 Sun Java System 配置信息(o=NetscapeRoot 子树)的 Directory Server 的端口或安全端口,可以通过 Directory Server Console 完成此操作。
如果要更改配置目录端口、用户目录端口或安全端口号,您需要明确以下可能产生的影响:
- 您需要更改如下信息:为 Administration Server 配置的配置目录端口、用户目录端口或安全端口号。请参见 Administration Server Administration Guide。
- 如果安装指向此配置目录或用户目录的其他 Sun Java System 服务器,则您需要更新这些服务器以使其指向新端口号。
- 如果在其他服务器上定义的复制协议中引用了 Directory Server,则必须更新复制协议以使用新的端口号或安全端口号。
- 如果设置不具有特权的端口号,而且 Directory Server 安装在其他用户可以访问的计算机上,那么您的端口可能会有被其他应用程序拦截的危险。换言之,其他应用程序可以绑定到相同的地址/端口对。该恶意应用程序随后就可以处理专门针对 Directory Server 的请求,而且可用于捕获在验证过程中使用的密码,更改客户机请求或服务器响应,或者采取拒绝服务攻击的手段。为避免遇到此安全风险,请使用 nsslapd-listenhost 属性指定 Directory Server 将侦听的接口(地址)。有关此属性的详细信息,请参见 Directory Server Administration Reference。
- 通过控制台更改端口号并不需要对某些脚本进行必要的更改。以下脚本仍被硬编码为原始端口号,必须手动进行修改:bak2db.pl、schema_push.pl、db2bak.pl、check-slapd、db2index.pl、db2ldif.pl、monitor、ldif2db.pl、ns-accountstatus.pl、ldif2ldap、ns-activate.pl、ns-inactivate.pl。
注意,此处提供的脚本名称是单独的工具名称,且未记录 check-slapd 命令,因为它不是公开的 API 的一部分。有关详细信息,请参见 Directory Server Administration Reference。
修改 Directory Server 侦听接收 LDAP 请求所使用的端口或安全端口要修改用于 DSML 请求的端口,请参见配置 DSML。
- 在 Directory Server Console 的顶级“配置”选项卡上,选择与服务器名称相同的根节点,然后在右面板中选择“网络”选项卡。
选项卡显示用于 LDAP 协议的服务器的当前端口设置。
- 在“端口”字段中输入服务器用于非 SSL 通讯的端口号。默认值是 389。
- 如果在该服务器上具有已激活的 SSL(如第 11 章“管理验证和加密”中所述),则允许在安全端口上的连接:
- 单击“保存”,然后重新启动服务器。
有关信息,请参见启动和停止 Directory Server。
设置全局只读模式
可以将目录中的每个后缀独立地设为只读模式,定义为只读模式后,可能会返回一个特定引用。Directory Server 还提供适用于所有后缀的全局只读模式,定义为此模式后,可能会返回一个全局引用。
使用全局只读模式后,在执行如重新索引后缀这样的任务时,管理员可以防止修改目录内容。因此,全局只读模式不适用于以下配置分支:
不管是否为只读设置,这些分支始终都应由访问控制指令 (ACI) 保护,以防被非管理用户修改(请参见第 6 章“管理访问控制”)。全局只读模式将防止在目录中的所有其他后缀上执行更新操作,包括由目录管理员执行的更新操作。
如果启用了只读模式,它还会中断后缀的复制。主副本不再有任何要复制的更改,不过它仍会继续复制启用只读模式前所做的所有更改。禁用只读模式前,消费者副本不会再接收到任何更新。多主复制方案中的主副本既不会有任何要复制的更改,也不能从其他主副本处接收更新。
要启用或禁用全局只读模式,请执行以下操作:
有关将个别后缀设置为只读模式的信息,请参见设置后缀只读模式。
跟踪对目录条目的修改
您可以配置服务器,以维护新创建条目或已修改条目的特殊属性:
- creatorsName——最先创建此条目的人员的标识名。
- createTimestamp——以 GMT(格林尼治标准时间)格式创建条目时的时间戳。
- modifiersName——上次修改条目人员的标识名。
- modifyTimestamp——上次以 GMT 格式修改的条目的时间戳。
注
当客户机应用程序要创建或修改链接后缀中的条目时,creatorsName 和 modifiersName 属性不反映条目的实际创建人或修改人。这些属性包含绑定至远程服务器所需的链接代理名称。有关代理授权的信息,请参见创建代理身份。
跟踪复制的后缀的修改时间时,名称和时间戳属性作为常规属性被复制。因此,这些属性反映的是主服务器上对条目所做原始修改的时间,而不是条目复制到消费者服务器上的时间。
要启用 Directory Server 以跟踪此信息,请执行以下操作:
- 在 Directory Server Console 的顶级“配置”选项卡中,选择配置树中的根节点,然后在右面板中选择“设置”选项卡。
- 选中“跟踪条目修改时间”复选框。
服务器会将 creatorsName、createTimestamp、modifiersName 和 modifyTimestamp 属性添加至每个新创建条目或已修改条目。现有条目将不会包含创建属性。
- 单击“保存”,然后重新启动服务器。
有关详细信息,请参见启动和停止 Directory Server。
验证插件签名验证插件签名是 Directory Server 5.2 的一项新功能。Directory Server 提供的每个插件都具有一个数字签名,服务器可以在启动时对其进行验证。默认情况下,服务器将验证插件签名,但是不管签名是否存在或有效,它都会加载每个插件。
验证签名具有以下优点:
配置插件签名的验证
- 在 Directory Server Console 的顶级“配置”选项卡上,在配置树中选择“插件”节点。当前的签名验证策略显示在右面板中。
- 选择以下选项之一:
- 单击“保存”,然后重新启动 Directory Server,如启动和停止 Directory Server 中所述。
查看插件的状态
配置 DSML除了处理轻型目录访问协议 (LDAP) 中的请求之外,Directory Server 还会响应目录服务标记语言版本 2 (DSMLv2) 中发送的请求。DSML 是客户机对目录操作进行编码的另一种方式,但服务器将使用所有相同的访问控制和安全功能,以处理其他请求的方式来处理 DSML 请求。事实上,DSML 处理允许多种其他类型的客户机访问您的目录内容。
Directory Server 支持通过超文本传输协议 (HTTP/1.1) 使用 DSMLv2,并使用简单对象访问协议 (SOAP) 版本 1.1 作为传送 DSML 内容的编程协议。有关这些协议以及 DSML 请求示例的详细信息,请参见使用 DSMLv2 访问目录。
启用 DSML 请求
由于 LDAP 是用于访问目录的标准协议,因此安装 Directory Server 后默认情况下不会启用 DSML 请求。如果希望服务器对通过 HTTP/SOAP 发送的 DSML 请求作出响应,必须明确启用此功能。
要通过控制台在服务器上启用 DSML 请求,请执行以下操作:
- 在 Directory Server Console 的顶级“配置”选项卡上,选择配置树中的根节点,然后在右面板中选择“网络”选项卡。
- 选中“启用 DSML”复选框,并选择以下安全选项之一。仅当具有激活的 SSL 时,安全端口选项才可用,如第 11 章“管理验证和加密”中所述
- 然后编辑以下任意字段:
- 单击“保存”,系统将提示您必须重新启动服务器才能开始响应 DSML 请求。
要通过命令行启用 DSML 请求,请执行以下操作:
- 执行以下 ldapmodify 命令,以启用 DSML 前端插件并修改其设置。修改 ds-hdsml-port、ds-hdsml-secureport 和 ds-hdsml-rooturl 属性是可选的:
% ldapmodify -h host -p LDAPport -D "cn=Directory Manager" -w passwd
dn:cn=DSMLv2-SOAP-HTTP,cn=frontends,cn=plugins,cn=config
changetype:modify
replace:nsslapd-pluginEnabled
nsslapd-pluginEnabled:on
-
replace:ds-hdsml-port
ds-hdsml-port:DSMLport
-
add:ds-hdsml-secureport
ds-hdsml-port:secureDSMLport
-
replace:ds-hdsml-rooturl
ds-hdsml-root:relativeURL
-
^D根据已定义的参数和属性值,DSML 客户机可能使用以下 URL 向此服务器发送请求:
http://host:DSMLport/relativeURL
https://host:secureDSMLport/relativeURL
- 修改 DSML 前端插件后,必须重新启动服务器更改才能生效。不过,在重新启动服务器前,您可能希望按照后面小节中的说明为 DSML 验证配置安全和标识映射。
配置 DSML 安全性
除上节中介绍的安全端口设置外,您还可以配置接受 DSML 请求所必需的安全级别。DSML 前端插件的 ds-hdsml-clientauthmethod 属性可以决定客户机所要求的验证方法。该属性可能有下列值:
- httpBasicOnly——服务器使用“HTTP 授权”标头的内容来查找可以被映射到目录中条目的用户名。DSML 标识映射对此过程及其配置进行了详细说明。使用此设置,对安全 HTTPS 端口的 DSML 请求将通过 SSL 进行加密,而不使用客户机证书。
- clientCertOnly——服务器使用客户机证书的凭证来识别客户机。使用此值,所有 DSML 客户机必须使用安全 HTTPS 端口来发送 DSML 请求,并提供一个证书。服务器将检查与目录中条目相匹配的客户机证书。有关详细信息,请参见第 11 章“管理验证和加密”。
- clientCertFirst——如果提供了客户机证书,服务器将首先尝试使用客户机证书对客户机进行验证。如果没有提供,服务器将使用“授权”标头的内容验证客户机。
如果 HTTP 请求中未提供证书和“授权”标头,则服务器将使用匿名绑定执行 DSML 请求。下列情况也将使用匿名绑定:
不论 ds-hdsml-clientauthmethod 属性为何值,如果提供了证书但证书却与条目不匹配,或者虽然指定了“HTTP 授权”标头但却不能映射至用户条目,则 DSML 请求将会被拒绝,并且返回消息 403:“已禁止”。
要通过控制台设置 DSML 安全要求,请执行以下操作:
- 在 Directory Server Console 的顶级“配置”选项卡上,选择配置树中的根节点,然后在右面板中选择“加密”选项卡。
必须已经配置并启用了 SSL,如第 11 章“管理验证和加密”中所述。
- 在“DSML 客户机验证”字段的下拉菜单中,选择选项之一。
- 单击“保存”,然后重新启动服务器以实施此新安全设置。
要通过命令行设置 DSML 安全要求,请执行以下操作:
- 运行以下 ldapmodify 命令以编辑 DSML 前端插件的属性:
% ldapmodify -h host -p LDAPport -D "cn=Directory Manager" -w passwd
dn:cn=DSMLv2-SOAP-HTTP,cn=frontends,cn=plugins,cn=config
changetype:modify
replace:ds-hdsml-clientauthmethod
ds-hdsml-clientauthmethod:httpBasicOnly or
clientCertOnly or clientCertFirst
^D- 修改 DSML 前端插件后,需要重新启动服务器以实施新的安全设置。
DSML 标识映射
在没有证书的情况下执行基本验证时,Directory Server 使用名为标识映射的机制来确定接受 DSML 请求时使用的绑定 DN。此机制从 HTTP 请求的“授权”标头中提取信息,以确定用于绑定的标识。有关该机制的完整说明,请参见标识映射。
服务器配置中的下列条目给出了用于 DSML-over-HTTP 的默认标识映射:
dn:cn=default,cn=HTTP-BASIC, cn=identity mapping, cn=config
objectclass:top
objectclass:nsContainer
objectclass:dsIdentityMapping
cn:default
dssearchbasedn:ou=People,userRoot
dssearchfilter:(uid=${Authorization})此映射搜索 ou=People,userRoot 子树以查找其 uid 属性与 Authorization 标头中给定的用户名相匹配的条目。userRoot 是安装目录时定义的后缀,例如 dc=example,dc=com。
在这些映射条目属性中,可以使用格式为 ${header} 的占位符,其中 header 为 HTTP 头的名称。DSML 映射中最常用的标头如下:
要使 DSML 请求执行其他的标识映射,请执行以下操作,以便为 HTTP 头定义新的标识映射:
- 编辑默认的 DSML-over-HTTP 标识映射或为该协议创建自定义映射。有关标识映射条目中属性的定义,请参见标识映射。这些映射条目必须位于以下条目的下方:
cn=HTTP-BASIC, cn=identity mapping, cn=config。可以采用以下两种方式之一创建新的映射条目:
- 使用 Directory Server Console 的顶级“目录”选项卡创建具有相应对象类的新条目,如使用控制台管理条目中所述。
- 使用 ldapmodify 工具从命令行添加此条目,如使用 ldapmodify 添加条目中所述。
- 重新启动 Directory Server 以使新映射生效。
首先将评估自定义映射,如果没有成功的定制映射,则将评估默认映射。如果所有映射都未能确定 DSML 请求的绑定 DN,则 DSML 请求将被禁止并拒绝(错误 403)。