Sun Java System Web Proxy Server 4.0.8 管理指南

用户/组的访问控制

您可以仅允许特定的用户或组访问您的服务器。用户/组访问控制要求用户提供用户名和密码,然后才能访问服务器。服务器会将客户机证书中的信息或客户机证书本身与一个目录服务器条目进行比较。

Administration Server 只使用基本验证。如果要求在 Administration Server 上进行客户机验证,必须手动编辑 obj.conf 中的 ACL 文件,将方法更改为 SSL。

用户-组验证由为服务器配置的目录服务执行。有关更多信息,请参见配置目录服务

目录服务用来实现访问控制的信息可能来自以下来源之一:

当服务器使用基于 LDAP 的外部目录服务时,对于服务器实例而言将支持以下类型的用户/组验证方法:

当服务器使用基于文件的内部目录服务时,服务器实例支持以下用户/组验证方法:

用户/组验证要求用户进行自我验证,然后才能获取访问权限。进行验证时,用户通过以下方法验证其身份:提供用户名和密码、使用客户机证书或使用摘要验证插件。使用客户机证书时需要进行加密。

默认验证

默认验证是首选方法。默认设置使用 obj.conf 文件中的默认方法;如果 obj.conf 中没有设置,则使用基本验证。如果选择 "Default",则 ACL 规则不会在 ACL 文件中指定方法。如果选择 "Default",您只需编辑 obj.conf 文件中的一行文本即可方便地更改所有 ACL 的方法。

基本验证

基本验证要求用户提供用户名和密码,才能访问服务器。基本验证是默认设置。您必须在 LDAP 数据库(例如 Sun Java System Directory Server)或某个文件中创建并存储一个用户和组的列表。您使用的目录服务器不能与您的 Proxy Server 安装在相同的服务器根目录下;您也可以使用安装在远程计算机上的目录服务器。

当用户尝试访问具有用户/组验证的资源时,系统会提示用户提供用户名和密码。根据您的服务器是否启用了加密(是否启用 SSL),服务器将收到加密或未加密的信息。


注 –

如果使用无 SSL 加密的基本验证,将以不加密的文本形式在网络中发送用户名和密码。网络包可能会被截取,并且用户名和密码可能会被盗用。基本验证与 SSL 加密和/或主机/IP 验证结合使用时效果最佳。使用摘要验证可以消除此问题。


如果验证成功,用户便可查看请求的资源。如果用户名或密码无效,系统会发出拒绝访问的消息。

您可以自定义未经授权的用户所接收的消息。有关更多信息,请参见访问被拒绝时的响应

SSL 验证

使用安全性证书,服务器可以用两种方式确认用户的身份:

如果将服务器配置为使用证书信息进行客户机验证,服务器会执行以下操作:

为控制对特定资源的访问而要求进行客户机验证和要求对与服务器的所有连接进行客户机验证是不同的。如果将服务器配置为要求对所有连接进行客户机验证,则客户机只需要提供由信任的 CA 颁发的有效证书。如果将服务器配置为使用 SSL 方法进行用户和组验证,则必须执行以下操作:

如果需要对访问控制进行客户机验证,必须针对 Proxy Server 启用 SSL 加密。有关启用 SSL 的更多信息,请参见第 5 章

要成功访问要求进行 SSL 验证的资源,客户机证书必须来自 Proxy Server 信任的 CA。如果 Proxy Server 的 certmap.conf 文件被配置为将浏览器中的客户机证书与目录服务器中的客户机证书相比较,则必须在该目录服务器中发布客户机证书。不过,certmap.conf 文件也可以配置为仅将证书中的选定信息与目录服务器条目进行比较。例如,您可以将 certmap.conf 配置为仅将浏览器证书中的用户 ID 和电子邮件地址与目录服务器条目进行比较。有关 certmap.conf 和证书映射的更多信息,请参见第 5 章。另请参见《Sun Java System Web Proxy Server 4.0.8 Configuration File Reference》

摘要验证

可以将 Proxy Server 配置为使用基于 LDAP 或文件的目录服务执行摘要验证。

摘要验证使用户能够基于用户名和密码进行验证,但不必以明文形式发送用户名和密码。浏览器使用用户密码和 Proxy Server 提供的某些信息,通过 MD5 算法创建摘要值。

当服务器使用基于 LDAP 的目录服务来执行摘要验证时,服务器端也将使用摘要验证插件来计算该摘要值,并且将该值与客户机提供的摘要值进行比较。如果这些摘要值相匹配,用户将通过验证。要进行这种验证,您的目录服务器必须有权访问明文形式的用户密码。Sun Java System Directory Server 具有一个可逆的密码插件,它使用对称的加密算法以加密形式存储数据,这些数据可在稍后被解密成原来的形式。只有目录服务器保存了数据的密钥。

对于基于 LDAP 的摘要验证,您必须启用 Proxy Server 附带的可逆密码插件和特定的摘要验证插件。要将 Proxy Server 配置为可以处理摘要验证,请在 dbswitch.conf 文件(位于 server-root/userdb/ 中)中设置数据库定义的 digestauth 属性。

以下为 dbswitch.conf 文件样例。


directory default ldap://<host_name>:<port>
default:binddn cn=Directory Manager
default:encoded bindpw ***********
default:digestauth on

或者


directory default ldap://<host_name>:<port>/
default:binddn cn=Directory Manager
default:encoded bindpw ***********
default:digestauthstate on

服务器将尝试基于指定的 ACL 方法验证 LDAP 数据库,如摘要验证所示。如果未指定 ACL 方法,当要求进行验证时,服务器将使用摘要验证或基本验证;当不要求进行验证时,服务器将使用基本验证。

下表列出了验证数据库支持以及不支持的摘要验证。

表 8–1 摘要验证的不同情况

ACL 方法 

验证数据库支持 

验证数据库不支持 

Default 

未指定 

Digest 和 Basic 

Basic 

Basic 

Basic 

Basic 

Digest 

Digest 

ERROR 

method=digest 的情况下处理 ACL 时,服务器将尝试通过执行以下操作进行验证:

安装摘要验证插件

对于使用基于 LDAP 的目录服务的摘要验证,必须安装摘要验证插件。此插件会计算服务器端的摘要值,并将该值与客户机提供的摘要值进行比较。如果这些摘要值相匹配,用户将通过验证。

如果您使用的是基于文件的验证数据库,则不需要安装摘要验证插件。

在 UNIX 上安装摘要验证插件

摘要验证插件包含一个共享库和一个 ldif 文件:

Procedure在 UNIX 上安装摘要验证插件

开始之前
  1. 要安装插件,请键入以下命令:

    % ldapmodify -D "cn=Directory Manager" -w password -a < libdigest-plugin.ldif

在 Windows 上安装摘要验证插件

为了使具有摘要验证插件的 Directory Server 能够正常启动,必须将 Proxy Server 安装中的多个 .dll 文件复制到 Sun Java System Directory Server 服务器计算机中。

Procedure在 Windows 上安装摘要验证插件

  1. 访问位于 Proxy Server 内 server-root\bin\proxy\bin 中的共享库。

  2. 将文件 nsldap32v50.dlllibspnr4.dlllibplds4.dll 复制到相应的目录中:

  3. 将这些文件粘贴到以下任一位置:

    • \Winnt\system32

      • Sun Java System Directory Server 安装目录:server-root\bin\sldap\server

将 Sun Java System Directory Server 设置为使用 DES 算法

对存储摘要密码的属性进行加密需要使用 DES 算法。

Procedure将 Directory Server 设置为使用 DES 算法

  1. 启动 Sun Java System Directory Server 控制台。

  2. 打开 Sun ONE Directory Server 5.1 SP1(或更高版本)的实例。

  3. 选择 "Configuration" 选项卡。

  4. 单击插件旁边的 + 号。

  5. 选择 DES 插件。

  6. 选择 "Add" 添加一个新属性。

  7. 键入 iplanetReversiblePassword

  8. 单击 "Save"。

  9. 设置摘要验证密码。


    注 –

    服务器使用位于对象类 iplanetReversiblePassword 中的 iplanetReversiblePassword 属性。要在 iplanetReversiblePassword 属性中为用户设置摘要验证密码,您的输入内容中必须包括 iplanetReversiblePasswordobject 对象。

    可以使用 ldapmodify 或 Directory Server 管理界面实现此操作。


    使用 ldapmodify

    创建文件 digest.ldif 以存储 LDAP 命令。添加密码通过两个步骤完成。

    1. 将对象类添加到 digest.ldif

      此文件包含以下内容(可以根据 Directory Server 用户和 ACL 创建多个 ldif 文件):


      dn:uid=user1,dc=india,dc=sun,dc=com
      changetype:modify
      add:objectclass
      objectclass:iplanetReversiblePasswordobject
      
      dn:uid=user1,dc=india,dc=india,dc=sun,dc=com
      changetype:modify
      add:iplanetReversiblePassword
      iplanetReversiblePassword:user1
    2. # ldapmodify -D "cn={CN_Value}" -w <password> -a <ldif_file_name>

  10. 重新启动 Sun Java System Directory Server 实例,并检验是否已将用户属性添加到 Directory Server 数据库中。

其他验证

可以使用访问控制 API 创建自定义验证方法。