DIGEST-MD5 机制通过比较客户端发送的散列值与用户密码的散列值来验证客户端。但是,由于此机制必须读取用户密码,因此要通过 DIGEST-MD5 进行验证的所有用户在目录中都必须具有 {CLEAR} 密码。在目录中存储 {CLEAR} 密码时,必须确保通过 ACI 正确限制对密码值的访问权限,如第 6 章,目录服务器访问控制中所述。此外,还需要在后缀中配置属性加密,如加密属性值中所述。
以下过程介绍如何将目录服务器配置为使用 DIGEST-MD5。
无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。
使用 ldapsearch 命令验证 DIGEST-MD5 是否为根条目上的 supportedSASLMechanisms 属性值。
例如,以下命令显示启用了哪些 SASL 机制:
$ ldapsearch -h host -p port -D cn=admin,cn=Administrators,cn=config -w - \ -s base -b "" "(objectclass=*)" supportedSASLMechanisms Enter bind password: dn: supportedSASLMechanisms: EXTERNAL supportedSASLMechanisms: DIGEST-MD5 supportedSASLMechanisms: GSSAPI ^D |
如果未启用 DIGEST-MD5,请将其启用。
$ ldapmodify -h host -p port -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: cn=SASL, cn=security, cn=config changetype: modify add: dsSaslPluginsEnable dsSaslPluginsEnable: DIGEST-MD5 - replace: dsSaslPluginsPath dsSaslPluginsPath: SASL-library ^D |
其中 SASL-library 为以下任一选项:
/usr/lib/mps/sasl2
install-path/dsee6/private/lib
为 DIGEST-MD5 使用默认标识映射,或创建新的映射。
有关信息,请参见DIGEST-MD5 标识映射。
对于将使用 DIGEST-MD5 通过 SSL 访问服务器的所有用户,确保以 {CLEAR} 形式存储密码。
有关密码存储模式的信息,请参见第 7 章,目录服务器密码策略。
如果修改了 SASL 配置条目或某个 DIGEST-MD5 标识映射条目,请重新启动目录服务器。
SASL 机制的标识映射尝试将 SASL 标识的凭证与目录中的用户条目进行匹配。如果映射找不到与 SASL 标识相对应的 DN,则验证将会失败。有关此机制的完整描述,请参见《Sun Java System Directory Server Enterprise Edition 6.0 Reference》。
SASL 标识是称为主体的字符串,以特定于每种机制的格式表示用户。在 DIGEST-MD5 中,客户端应创建包含 dn: 前缀和 LDAP DN 的主体,或者创建包含 u: 前缀(后跟由客户端确定的任何文本)的主体。在映射期间,客户端发送的主体可用于 ${Principal} 占位符中。
服务器配置中的以下条目是 DIGEST-MD5 的默认标识映射:
dn: cn=default,cn=DIGEST-MD5,cn=identity mapping,cn=config objectClass: top objectClass: nsContainer objectClass: dsIdentityMapping objectClass: dsPatternMatching cn: default dsMatching-pattern: \${Principal} dsMatching-regexp: dn:(.*) dsMappedDN: \$1 |
此标识映射假定主体的 dn 字段包含目录中现有用户的精确 DN。
无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。
编辑默认的映射条目,或者在 cn=DIGEST-MD5,cn=identity mapping,cn=config 下创建新的映射条目。
DIGEST-MD5 的示例映射位于 instance-path/ldif/identityMapping_Examples.ldif 中。
此示例假定主体的非限定文本字段中包含所需标识的用户名。以下命令显示应如何定义此映射:
$ ldapmodify -a -h host1 -p 1636 -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: cn=unqualified-username,cn=DIGEST-MD5,cn=identity mapping cn=config objectclass: dsIdentityMapping objectclass: dsPatternMatching objectclass: nsContainer objectclass: top cn: unqualified-username dsMatching-pattern: \${Principal} dsMatching-regexp: u:(.*)@(.*)\\.com dsSearchBaseDN: dc=\$2 dsSearchFilter: (uid=\$1) |
重新启动目录服务器以使新映射生效。