为客户机指定 proxy 或 proxy-anonymous 凭证级别时,还需要选择代理进行登录到目录服务器的验证的方法。缺省情况下,验证方法是 none,它指示进行匿名访问。对于该验证方法,还存在与之关联的传输安全选项。
与凭证级别一样,验证方法也可以为多值。例如,在客户机配置文件中,可以指定客户机首先尝试使用由 TLS 保护的 simple 方法进行绑定。如果绑定失败,则客户机将尝试使用 sasl/digest-MD5 方法进行绑定。因此,authenticationMethod 可以为 tls:simple;sasl/digest-MD5。
LDAP 名称服务支持某些简单身份验证和安全层 (Simple Authentication and Security Layer, SASL) 机制。这些机制无需 TLS 便可安全交换口令。但是,这些机制不提供数据完整性和保密性。有关 SASL 的信息,请参见 RFC 2222。
以下是受支持的验证机制:
none
客户机不进行登录到目录的验证。这与 anonymous 凭证级别等效。
如果客户机使用 simple 验证方法,则通过以明文形式发送用户的口令绑定到服务器。因此,除非会话受 ipsec(7) 保护,否则口令很容易被窥探。 使用 simple 验证方法的主要好处在于所有目录服务器都支持该验证方法且其易于设置。
在验证期间会保护客户机的口令,但不会对会话进行加密。某些目录服务器(包括 Sun Java System Directory Server)还支持 sasl/digest-MD5 验证方法。digest-MD5 的主要好处在于,在验证过程中,口令不会以明文形式通过线路传输,因此它比 simple 验证方法更安全。有关 digest-MD5 的信息,请参见 RFC 2831。digest-MD5 以 cram-MD5 为基础,在安全方面有所改进。
使用 sasl/digest-MD5 时,验证过程比较安全,但不会保护会话。
如果使用的是 Sun Java System Directory Server,则口令必须以明文形式存储在目录中。
sasl/cram-MD5
使用 sasl/cram-MD5 执行验证时,不会对 LDAP 会话进行加密,但是在验证期间会保护客户机的口令。
有关 cram-MD5 验证方法的信息,请参见 RFC 2195。只有部分目录服务器支持 cram-MD5。例如,Sun Java System Directory Server 就不支持 cram-MD5。
tls:simple
客户机使用 simple 方法进行绑定,并且对会话进行加密。口令也受到保护。
tls:sasl/cram-MD5
对 LDAP 会话进行加密,客户机使用 sasl/cram-MD5 进行登录到目录服务器的验证。
tls:sasl/digest-MD5
对 LDAP 会话进行加密,客户机使用 sasl/digest-MD5 进行登录到目录服务器的验证。
为了使用 digest-MD5,Sun Java System Directory Server 要求以明文形式存储口令。如果将验证方法设置为 sasl/digest-MD5 或 tls:sasl/digest-MD5,则代理用户的口令必须以明文形式存储。应特别小心的是,如果 userPassword 属性以明文形式存储,它将具有正确的 ACI,以便使其不可读。
下表概述了各种验证方法及其各自的特征。
表 9–4 验证方法
|
绑定 |
线路上的口令 |
Sun Java System Directory Server 上的口令 |
会话 |
---|---|---|---|---|
none |
否 |
N/A |
N/A |
不加密 |
simple |
是 |
明文 |
任何 |
不加密 |
sasl/digest-MD5 |
是 |
加密 |
明文 |
不加密 |
sasl/cram-MD5 |
是 |
加密 |
N/A |
不加密 |
tls:simple |
是 |
加密 |
任何 |
加密 |
tls:sasl/cram-MD5 |
是 |
加密 |
N/A |
加密 |
tls:sasl/digest-MD5 |
是 |
加密 |
明文 |
加密 |
可以在 serviceAuthenticationMethod 属性中为给定的服务指定验证方法。目前,以下服务支持此操作:
passwd-cmd
passwd(1) 使用此服务更改登录口令和口令属性。
keyserv
chkey(1) 和 newkey (1M) 实用程序使用此服务创建和更改用户的 Diffie-Hellman 密钥对。
pam_ldap
pam_ldap(5) 使用此服务验证用户。
pam_ldap 支持帐户管理。
如果未针对服务设置 serviceAuthenticationMethod,则缺省情况下将使用 authenticationMethod 属性的值。
下面示例列出了客户机配置文件的一部分,在这部分客户机配置文件中,用户将使用 sasl/digest-MD5 进行登录到目录服务器的验证,使用 SSL 会话更改其口令。
serviceAuthenticationMethod=pam_ldap:sasl/digest-MD5 serviceAuthenticationMethod=passwd-cmd:tls:simple |