Sun Java System Access Manager 7 2005Q4 管理指南

验证模块类型

验证模块是一个插件,可以收集用户信息(如用户 ID 和密码),然后根据数据库中的条目检查信息。如果用户提供的信息满足验证条件,则会批准该用户访问请求的资源。如果用户提供的信息不满足验证条件,则会拒绝该用户访问请求的资源。安装 Access Manager 时会随附 15 种类型的验证模块:


注 –

某些验证模块类型需要预配置然后才能用作验证实例。如有必要,配置步骤会在模块类型说明中列出。


核心

默认情况下,Access Manager 提供了十五个不同的验证模块和一个核心验证模块。核心验证模块提供验证模块的整体配置。在添加和启用活动目录验证模块、匿名验证模块、基于证书的验证模块、HTTP Basic 验证模块、JDBC 验证模块、LDAP 验证模块等验证模块之前,必须先添加和启用核心验证模块。对于默认领域,核心验证模块和 LDAP 验证模块自动启用。

单击“高级属性”按钮,可显示能为领域进行定义的核心验证属性。全局属性不适用于领域,因而不会显示出来。

活动目录

活动目录验证模块以类似于 LDAP 模块的方式执行验证,但是使用 Microsoft 的 Active Directory™ 服务器(LDAP 验证模块使用 Directory Server)。尽管 LDAP 验证模块可以被配置为使用活动目录服务器,但此模块允许在同一个领域下存在 LDAP 和活动目录验证。


注 –

对于此版本,活动目录验证模块仅支持用户验证。仅在 LDAP 验证模块中支持密码策略。


匿名

默认情况下,如果已启用此模块,则用户可以作为匿名用户登录 Access Manager。通过配置“有效匿名用户列表”属性,也可以为此模块定义一列匿名用户。允许匿名访问意味着无需提供密码即可访问该服务器。匿名访问可以限于特定的访问类型(例如,读取访问或搜索访问)、特定的子树或目录中的特定条目。

证书

基于证书的验证涉及到使用个人数字证书 (PDC) 确定用户的身份和验证用户。可以将 PDC 配置为要求用户提供的证书与 Directory Server 中存储的 PDC 相同,并且根据证书撤销列表进行验证。

将基于证书的验证模块添加到领域之前,需要完成许多操作。首先,需要确保与 Access Manager 一起安装的 Web 容器正常运行,并配置此 Web 容器使其适用于基于证书的验证。启用基于证书的模块之前,请参阅《Sun ONE Web Server 6.1 管理员指南》中的第 6 章“使用证书和密钥”,了解有关 Web 服务器的初始配置步骤。可以在以下位置找到此文档:

http://docs.sun.com/db/prod/s1websrv#hic

或参阅以下位置的 Sun ONE Application Sever Administrator’s Guide to Security

http://docs.sun.com/db/prod/s1appsrv#hic


注 –

使用基于证书的模块进行验证的用户必须请求用户浏览器的 PDC。具体说明各不相同,视使用的浏览器而定。有关详细信息,请参阅浏览器的文档。


要添加此模块,必须作为领域管理员登录 Access Manager,将 Access Manager 和 Web 容器配置为 SSL,并且启用客户机验证。有关详细信息,请参阅第 3 章,在 SSL 模式下配置 Access Manager

HTTP Basic

此模块使用基本验证,该验证是 HTTP 协议的内置验证支持。Web server 发出对用户名和密码的客户机请求,并将这些信息作为已验证的请求的一部分发送回服务器。Access Manager 将检索用户名和密码,然后在内部根据 LDAP 验证模块验证用户。为使 HTTP Basic 正常工作,还必须添加 LDAP 验证模块(只添加 HTTP Basic 模块将无法正常工作)。用户成功进行验证后,可以在不提供用户名和密码的情况下重新进行验证。

JDBC

Java 数据库连接 (JDBC) 验证模块提供一种验证机制,允许 Access Manager 通过任何 SQL 数据库(提供 JDBC 技术辅助驱动程序)验证用户。可以直接通过 JDBC 驱动程序或 JNDI 连接池与 SQL 数据库连接。


注 –

此模块已在 MySQL4.0 和 Oracle 8i 上进行过测试。


LDAP

有了 LDAP 验证模块,用户登录时必须用特定用户 DN 和密码绑定至 LDAP 目录服务器。这是适用于所有基于领域的验证的默认验证模块。如果用户提供了 Directory Server 中的用户 ID 和密码, 则建立并允许用户访问有效的 Access Manager 会话。对于默认领域,核心验证模块和 LDAP 验证模块自动启用

成员资格

成员资格验证的实现类似于个性化设置站点,如 my.site.commysun.sun.com。启用此模块时,用户可以在没有管理员帮助的情况下创建帐户并对其进行个性化设置。利用这个新帐户,用户可以作为已添加的用户来访问该服务。用户还可以访问作为授权数据和用户首选项保存在用户概要文件数据库中的查看器界面。

MSISDN

移动站集成服务数字网络 (MSISDN) 验证模块使用与设备(如移动电话)关联的移动用户 ISDN 来启用验证。它是一种非交互式模块。该模块检索用户 ISDN 并根据 Directory Server 对其进行验证,以查找与编号匹配的用户。

RADIUS

可以将 Access Manager 配置为与已安装的 RADIUS 服务器一起使用。如果企业中正在使用原有的 RADIUS 服务器进行验证,这样做很有用。RADIUS 验证模块的启用过程分为两个步骤:

  1. 配置 RADIUS 服务器。

    有关详细说明,请参阅 RADIUS 服务器文档。

  2. 注册和启用 RADIUS 验证模块。

使用 Sun Java System Application Server 配置 RADIUS

默认情况下,当 RADUIS 客户机与其服务器建立套接字连接时,Application Server 的 server.policy 文件中只允许 SocketPermission 的连接权限。为使 RADUIS 验证正常工作,对于以下操作应授予权限:

要授予套接字连接权限,必须在 Application Server 的 server.policy 文件中添加一个条目。SocketPermission 由主机规范和指定连接到该主机的方式的一组操作组成。请按以下格式指定主机:

host = hostname | IPaddress:portrange:portrange = portnumber 

| -portnumberportnumber-portnumber

主机可以表示为 DNS 名称、数字 IP 地址或 localhost(对于本地计算机)。可以在指定的 DNS 主机名中包含一处通配符“*”。如果包含该通配符,它必须在最左侧的位置,如 *.example.com

端口(或端口范围)是可选的。形式为 N- 的端口规范(其中 N 为端口号)表示编号为 N 及以上的所有端口。形式为 -N 的规范表示编号为 N 及以下的所有端口。

侦听操作仅在与本地主机一起使用时才有意义。存在其他任意操作时,都暗含解析(解析主机/IP 名称服务查找)操作。

例如,当创建 SocketPermission 时,请注意如果将以下权限授予某个代码,将允许该代码连接到 machine1.example.com 上的 port 1645,并接受该端口上的连接:

permission java.net.SocketPermission machine1.example.com:1645, "connect,accept";

类似地,如果将以下权限授予某些代码,将允许该代码接受本地主机上 1024 和 65535 之间的所有端口上的连接、连接到这些端口或侦听它们:

permission java.net.SocketPermission "machine1.example.com:1645", "connect,accept";

permission java.net.SocketPermission "localhost:1024-", "accept,connect,listen";

注 –

授予代码权限以接受或建立到远程主机的连接可能会引起问题,因为恶意代码可以更容易地在各方之间传送和共享机密数据,使可能不具有数据访问权限的人访问到数据。请确保通过指定确切的端口号(而不是指定一个端口号的范围)仅授予适当的权限。


SafeWord

可以配置 Access Manager 使其处理发送到 Secure Computing 的 SafeWord™ 或 SafeWord PremierAccess™ 验证服务器的 SafeWord 验证请求。Access Manager 提供 SafeWord 验证的客户机部分。SafeWord 服务器可能位于安装 Access Manager 的系统或单独的系统中

使用 Sun Java System Application Server 配置 SafeWord

默认情况下,当 SafeWord 客户机建立到其服务器的套接字连接时,在 Application Server 的 server.policy 文件中只允许 SocketPermission 连接权限。为使 SafeWord 验证正常工作,对于以下操作应授予权限:

要授予套接字连接权限,必须在 Application Server 的 server.policy 文件中添加一个条目。SocketPermission 由主机规范和指定连接到该主机的方式的一组操作组成。请按以下格式指定主机:

host = (hostname | IPaddress)[:portrange] portrange = 

portnumber | -portnumberportnumber-[portnumber]

主机可以表示为 DNS 名称、数字 IP 地址或 localhost(对于本地计算机)。可以在指定的 DNS 主机名中包含一处通配符“*”。如果包含该通配符,它必须在最左侧的位置,如 *.example.com

端口(或 portrange)是可选的。形式为 N- 的端口规范(其中 N 为端口号)表示编号为 N 及以上的所有端口。形式为 -N 的规范表示编号为 N 及以下的所有端口。

侦听操作仅在与本地主机一起使用时才有意义。存在其他任意操作时,都暗含解析(解析主机/IP 名称服务查找)操作。

例如,当创建 SocketPermission 时,请注意如果将以下权限授予某个代码,将允许该代码连接到 machine1.example.com 上的 port 1645,并接受该端口上的连接:

permission java.net.SocketPermission machine1.example.com:5030, "connect,accept";

类似地,如果将以下权限授予某些代码,将允许该代码接受本地主机上 1024 和 65535 之间的所有端口上的连接、连接到这些端口或侦听它们:

permission java.net.SocketPermission "machine1.example.com:5030", "connect,accept";

permission java.net.SocketPermission "localhost:1024-", "accept,connect,listen";

注 –

授予代码权限以接受或建立到远程主机的连接可能会引起问题,因为恶意代码可以更容易地在各方之间传送和共享机密数据,使可能不具有数据访问权限的人访问到数据。请确保通过指定确切的端口号(而不是指定一个端口号的范围)仅授予适当的权限。


SAML

安全声明标记语言 (SAML) 验证模块接收和验证目标服务器上的 SAML 声明。SAML SSO 仅在目标机器上配置了此模块后才会工作,包括升级后(例如从 Access Manager 2004Q2 升级到 Access Manager 2005Q1)。

SecurID

可以对 Access Manager 进行配置,以处理 RSA 的 ACE/Server 验证服务器的 SecureID 验证请求。Access Manager 提供 SecurID 验证的客户机部分。ACE/Server 可能位于安装 Access Manager 的系统或单独的系统中。要验证本地管理员的用户 ID(请参阅 admintool (1M)),必须具备超级用户 (root) 访问权限。

SecurID 验证使用验证帮助器 amsecuridd,这是独立于主 Access Manager 进程以外的进程。在启动时,此帮助器将在端口上侦听配置信息。如果将 Access Manager 安装为以 nobody 运行,或以超级用户 (root) 以外的用户 ID 运行,AccessManager-base/SUNWam/share/bin/amsecuridd 进程必须仍以超级用户身份操作。有关 amsecuridd 帮助器的详细信息,请参阅第 20 章,amsecuridd 帮助器


注 –

在此发行版本的 Access Manager 中,SecurID 验证模块不适用于 Linux 或 Solaris x86 平台,因此不能在这两个平台上注册、配置或启用。它仅适用于 SPARC 系统。


UNIX

可以配置 Access Manager 使其按照安装了 Access Manager 的 Solaris 或 Linux 系统已知的 Unix 用户 ID 和密码来处理验证请求。尽管 Unix 验证只有一个领域属性和几个全局属性,仍有一些面向系统的注意事项。要验证本地管理员的用户 ID(请参阅 admintool (1M)),必须具备超级用户 (root) 访问权限。

Unix 验证使用验证帮助器 amunixd,这是独立于主 Access Manager 进程以外的进程。在启动时,此帮助器将在端口上侦听配置信息。每个 Access Manager 只有一个 Unix 帮助器用于其所有领域。

如果将 Access Manager 安装为以 nobody 运行,或以超级用户外 (root) 以外的用户 ID 运行,AccessManager-base/SUNWam/share/bin/amunixd 进程必须仍以超级用户身份操作。Unix 验证模块通过打开到 localhost:58946 的套接字调用 amunixd 守护进程以侦听 Unix 验证请求。要在默认端口上运行 amunixd 帮助器进程,请输入以下命令:

./amunixd

要在非默认端口上运行 amunixd,请输入以下命令:

./amunixd [-c portnm] [ipaddress]

IP 地址和端口号位于 AMConfig.properties 中的 UnixHelper.ipadrs(以 IPV4 格式)和 UnixHelper.port 属性中。您可以通过 amserver 命令行实用程序运行 amunixdamserver 自动运行进程,从 AMConfig.properties 中检索端口号和 IP 地址)。

/etc/nsswitch.conf 文件中的 passwd 条目确定是否查询 /etc/passwd/etc/shadow 文件或 NIS 以进行验证。

Windows 桌面 SSO

Windows 桌面 SSO 验证模块是一个基于 Kerberos 的验证插件模块,用于 Windows 2000™。它允许已通过 Kerberos 分发中心 (KDC) 验证的用户无需重新提交登录条件即可验证到 Access Manager(单一登录)。

用户通过 SPNEGO(简单且受保护的 GSS-API 协商机制)协议向 Access Manager 提交 Kerberos 令牌。要通过此验证模块执行基于 Kerberos 的 Access Manager 单点登录,用户必须在客户机端支持 SPNEGO 协议以验证本身。一般而言,支持此协议的任何用户应该都能使用此模块验证 Access Manager。根据客户机端令牌的可用性,此模块提供 SPENGO 令牌或 Kerberos 令牌(这两种情况下协议是相同的)。 在 Windows 2000(或更高版本)上运行的 Microsoft Internet Explorer(5.01 或更高版本)当前支持此协议。此外,Solaris(9 和 10)上的 Mozilla 1.4 支持 SPNEGO,但返回的令牌只有一个 KERBEROS 令牌,因为 SPNEGO 在 Solaris 上不受支持。


注 –

必须使用 JDK 1.4 或更高版本利用 Kerberos V5 验证模块和 Java GSS API 的新功能,以执行此 SPNEGO 模块中基于 Kerberos 的 SSO。


Internet Explorer 的已知限制

如果在进行 WindowsDesktopSSO 验证时使用 Microsoft Internet Explorer 6.x,并且浏览器不能访问与 WindowsDesktopSSO 模块中配置的 (KDC) 领域匹配的用户 kerberos/SPNEGO 令牌,则浏览器在验证 WindowsDesktopSSO 模块失败后无法对其他模块实施正确的行为。问题的直接原因是:在 Internet Explorer 验证 WindowsDesktopSSO 模块失败后,浏览器若未重新启动,将无法传送回叫(其他模块的)给 Access Manager,即使系统提示该回叫。因此,WindowsDesktopSSO 后的所有模块都将因无效的用户证书而失败。

相关信息,请参阅以下文档:

http://support.microsoft.com/default.aspx?scid=kb;en-us;308074

http://www.wedgetail.com/jcsi/sso/doc/guide/troubleshooting.html#ieNTLM

配置 Windows 桌面 SSO

启用 Windows 桌面 SSO 验证分为两个步骤:

  1. 在 Windows 2000 域控制器中创建用户。

  2. 设置 Internet Explorer。

Procedure在 Windows 2000 域控制器中创建用户

步骤
  1. 在域控制器中,为 Access Manager 验证模块创建用户帐户。

    1. 从“开始”菜单中,转至“程序”>“管理工具”。

    2. 选择“活动目录用户”和“计算机”。

    3. 以 Access Manager 主机名作为用户 ID(登录名)创建新用户。Access Manager 主机名不应该包含域名。

  2. 在用户帐户与服务提供者名称间建立关联,并将键表文件导出至装有 Access Manager 的系统。为此,请运行以下命令:


    ktpass -princ host/hostname.domainname@DCDOMAIN -pass password -mapuser userName-out 
    
    hostname.host.keytab
    
    ktpass -princ HTTP/hostname.domainname@DCDOMAIN -pass 
    
    password -mapuser userName-out hostname
    
    .HTTP.keytab

    ktpass 命令接受以下参数:

    hostname。运行 Access Manager 的主机名(不含域名)。

    domainname。Access Manager 的域名。

    DCDOMAIN。域控制器的域名。它可能与 Access Manager 域名不同。

    password。用户帐户的密码。请确保密码正确,因为 ktpass 不校验密码。

    userName。用户帐户 ID。它应与主机名相同。


    注 –

    确保两个键表文件都已安全保管。


    服务模板的值应与以下示例类似:

    服务负责人: HTTP/machine1.EXAMPLE.COM@ISQA.EXAMPLE.COM

    Keytab 文件名:/tmp/machine1.HTTP.keytab

    Kerberos 领域: ISQA.EXAMPLE.COM

    Kerberos 服务器名:machine2.EXAMPLE.com

    返回带有域名的负责人:false

    验证级别: 22

  3. 重新启动服务器。

Procedure设置 Internet Explorer

以下步骤适用于 Microsoft Internet Explorer™ 6 及更高版本。如果您使用的是较早版本,请确保 Access Manager 位于浏览器的 Internet 区域并启用“本地 Windows 验证”。

步骤
  1. 在“工具”菜单中,转至“Internet 选项”>“高级”/”安全”>“安全”。

  2. 选择“集成的 Windows 验证”选项。

  3. 转至“安全”>“本地 Intranet”。

    1. 选择“自定义级别”。在“用户验证/登录”面板中,选择“只在 Intranet 区域自动登录”选项。

    2. 转到“站点”并选择所有选项。

    3. 单击“高级”,将 Access Manager 添加到本地区域(如果尚未添加)。

Windows NT

可以将 Access Manager 配置为与已安装的 Windows NT /Windows 2000 server 一起使用。Access Manager 提供 NT 验证的客户机部分。

  1. 配置 NT 服务器。有关详细信息,请参阅 Windows NT server 文档。

  2. 在添加和启用 Windows NT 验证模块之前,必须获取并安装 Samba 客户机,以与 Solaris 系统上的 Access Manager 进行通信。

安装 Samba 客户机

要激活 Windows NT 验证模块,必须下载 Samba 客户机2.2.2 并安装到以下目录:

AccessManager-base/SUNWam/bin

Samba Client 是文件服务器和打印服务器,它将 Windows 计算机和 UNIX 计算机融合在一起而无需使用单独的 Windows NT/2000 服务器。有关该软件的详细信息及下载该软件,请访问 http://wwws.sun.com/software/download/products/3e3af224.html。

Red Hat Linux 随 Samba 客户机一起发行,它位于以下目录:

/usr/bin

为了使用 Windows NT 验证模块为 Linux 进行验证,请将客户机二进制文件复制到以下 Access Manager 目录:

AccessManager-base/sun/identity/bin

注 –

如果有多个界面,则需要额外配置。smb.conf 文件中的配置可以设置多个界面,以便传递到 mbclient