Sun Java System Access Manager 7.1 管理指南

第 4 章 管理验证

“验证服务”为所有在 Access Manager 部署中安装的默认验证类型提供基于 Web 的用户界面。此界面在用户请求访问时显示登录要求屏幕(根据所调用的验证模块),从而为收集验证证书提供动态和可自定义的方法。此界面使用 Sun Java System™ 应用程序框架(有时称为 JATO)创建,该框架是一个用来帮助开发者创建功能性 Web 应用程序的 Java 2 Enterprise Edition (J2EE) 表示框架。

配置验证

本节介绍如何为部署配置验证。第一小节概述默认验证模块类型并提供所有必需的预配置说明。可以为领域、用户、角色等配置同一验证模块类型的多个配置实例。另外,可以添加验证链,这样验证必须满足多个实例的条件后才能成功。本节包括:

验证模块类型

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


注 –

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


核心

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

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

活动目录

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


注 –

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


匿名

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

证书

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

将基于证书的验证模块添加到领域之前,需要完成许多操作。首先,需要确保与 Access Manager 一起安装的 Web 容器的安全,并配置此 Web 容器使其适用于基于证书的验证。


注 –

如果通过启用 SSL 的 Sun Java System Web Server 6.1 实例配置 Access Manager 证书验证,并且希望定义的 WebServer 接受基于证书和非基于证书的验证请求,则必须在 WebServer 的 obj.conf 文件中设置以下值:

PathCheck fn="get-client-cert" dorequest="1" require="0"

这是由于为此行为设置可选属性时,WebServer 控制台中存在限制。


启用基于证书的模块之前,参见《Sun ONE Web Server 6.1 管理员指南》中的第 6 章“使用证书和密钥”,了解 Web Server 的初始配置步骤。可以在以下位置找到此文档:

http://docs.sun.com/app/docs/coll/S1_websvr61_en

或参见以下位置的《Sun ONE Application Sever Administrator’s Guide to Security》:

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


注 –

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


要添加此模块,必须作为领域管理员登录 Access Manager,将 Access Manager 和 Web 容器配置为使用 SSL 并启用客户机验证。有关详细信息,参见 Access Manager Post Installation Guide 中的“Configuring Access Manager in SSL Mode”。

数据存储库

数据存储库验证模块允许使用领域的身份系统信息库在用户登录时对其进行验证。如果要根据同一数据存储库系统信息库进行验证,那么采用数据存储库模块便可免去编写验证插件模块,加载然后配置验证模块的麻烦。此外,也无需编写自定义验证模块(其中,需要对该领域中的相应系统信息库进行平面文件验证)。

配置 Access Manager 验证时,此验证类型会提供不少便利。在 Access Manager 7.1 之前的版本中,如果希望 LDAPv3 数据存储库中的用户可验证到其领域,则必须执行以下操作:

数据存储库验证模块验证在领域的身份系统信息库中定义的用户。无需任何 LDAP 验证配置。例如,假设领域的身份系统信息库包括一个 LDAPv3 数据存储库,而且相同的领域使用数据存储库验证。在这种情况下,定义于身份系统信息库中的任何用户都可验证到该领域。

HTTP Basic

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

JDBC

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


注 –

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


LDAP

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

成员资格

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

MSISDN

移动站集成服务数字网络 (Mobile Station Integrated Services Digital Network, 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

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

port(或 port range)是可选的。形式为 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 的 connect 权限。为使 SafeWord 验证正常工作,需要对以下操作授予权限:

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

host = (hostname | IPaddress)[:portrange] portrange = 
portnumber | -portnumberportnumber-[portnumber]

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

port(或 port range)是可选的。形式为 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

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

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 身份运行,或者以非超级用户的某种 userid 身份运行,则 AccessManager-base/SUNWam/share/bin/amsecuridd 进程必须仍以超级用户身份运行。有关 amsecuridd 帮助应用程序的详细信息,参见 Access Manager Administration Reference 中的“The amSecurID Helper”。


注 –

在此发行版本的 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 运行,或者以非超级用户的某种 userid 身份运行,则 AccessManager-base/SUNWam/share/bin/amunixd 进程必须仍以超级用户身份运行。Unix 验证模块通过打开到 localhost:58946 的套接字调用 amunixd 守护进程以侦听 Unix 验证请求。要在默认端口上运行 amunixd 帮助应用程序进程,请输入以下命令:

./amunixd

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

./amunixd [-c portnm] [ipaddress]

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

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

Windows Desktop SSO

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

用户通过 SPNEGO(Simple and Protected GSS-API Negotiation Mechanism,简单且受保护的 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 令牌,因为 Solaris 上不支持 SPNEGO。


注 –

必须使用 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


注 –

此版本的 Access Manager 发行时,Microsoft 已修复了此限制。有关详细信息,参见以下文档:

http://www.microsoft.com/technet/security/bulletin/ms06-042.mspx


配置 Windows Desktop SSO

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

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

  2. 设置 Internet Explorer。

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

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

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

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

    3. 转至“计算机”>“新建”>“计算机”,并添加客户机计算机的名称。如果使用的是 Windows XP,则会在域控制器帐户配置期间自动执行该步骤。

    4. 转至“用户”>“新建”>“用户”,并创建具有 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 实用程序不会作为 Windows 2000 服务器的一部分安装。必须从安装 CD 将其安装到 c:\program files\support 工具目录。


    ktpass 命令接受以下参数:

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

    domainname。Access Manager 的域名。

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

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

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


    注 –

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


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

    服务主体:HTTP/machine1.EXAMPLE.COM@ISQA.EXAMPLE.COM

    密钥文件名:/tmp/machine1.HTTP.keytab

    Kerberos 领域:ISQA.EXAMPLE.COM

    Kerberos 服务器名:machine2.EXAMPLE.com

    返回带有域名的主体:false

    验证级别:22


    注 –

    如果使用的是 Windows 2003 或 Windows 2003 Service Pack,则使用以下 ktpass 命令语法:


    ktpass /out filename /mapuser username /princ HTTP/hostname.domainname 
         /crypto encryptiontype /rndpass /ptype principaltype /target domainname
    

    例如:


    ktpass /out demo.HTTP.keytab /mapuser http 
    /princ HTTP/demo.identity.sun.com@IDENTITY.SUN.COM /crypto RC4-HMAC-NT 
    /rndpass /ptype KRB5_NT_PRINCIPAL /target IDENTITY.SUN.COM

    有关语法定义,参见 http://technet2.microsoft.com/WindowsServer/en/library/64042138-9a5a-4981-84e9-d576a8db0d051033.mspx?mfr=true Web 站点。


  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 服务器文档。

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

安装 Samba 客户端

为了激活 Windows NT 验证模块,必须下载 Samba Client 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

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

AccessManager-base/sun/identity/bin

注 –

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


验证模块实例

可以根据默认验证模块为领域创建多个验证模块实例。可以添加同一个验证模块的多个单独配置的实例。

Procedure创建新的验证模块实例

  1. 单击要为其添加新验证模块实例的领域的名称。

  2. 选择“验证”选项卡。


    注 –

    “管理员验证配置”按钮只能为管理员定义验证服务。如果需要将管理员的验证模块与最终用户的验证模块区别开来,则可以使用该属性。在访问 Access Manager 控制台时,将使用该属性中配置的模块。


  3. 在“模块实例”列表中单击“新建”。

  4. 输入验证模块实例的名称。该名称必须唯一。

  5. 选择领域验证模块的类型。

  6. 单击“创建”。

  7. 单击新建的模块实例名,并编辑该模块的属性。有关每种模块类型的属性的定义,参见联机帮助中的“验证”部分。

  8. 重复执行这些步骤可以添加多个模块实例。

验证链接

可以配置一个或多个验证模块,用户必须将验证证书传递到这些验证模块中。这称为验证链接。Access Manager 的验证链接是通过使用集成在验证服务中的 JAAS 框架实现的。

Procedure创建新的验证链

  1. 单击要为其添加新验证链的领域的名称。

  2. 选择“验证”选项卡。

  3. 在“验证链接”列表中单击“新建”。

  4. 请输入验证链名称。

  5. 单击“创建”。

  6. 单击“添加”以定义您要在链里包含的验证模块实例。可以通过从实例列表中选择模块实例名来完成此步骤。此列表中所显示的模块实例名都是在“模块实例”属性中创建的。

  7. 为验证链选择标准。这些标志建立了其定义的验证模块的执行标准。执行具有层次结构。“必需”为最高层,“可选”为最低层:

    必要

    要成功验证必须要通过此模块实例。如果验证成功,将继续验证链接列表中的下一个模块实例。如果验证失败,则立即返回到应用程序(不继续验证链接列表中的下一个模块实例)。

    必需

    对此模块的验证必须成功。如果链中的任一必需模块验证失败,则整个验证链将最终失败。然而,无论必需模块的验证成功或失败,都将继续链中的下一个模块。

    充足

    不要求模块实例必须成功。如果验证成功,则立即返回到应用程序(不继续模块实例列表中的下一个验证模块)。如果验证失败,将继续验证链接列表中的下一个验证模块。

    可选

    不要求模块实例必须成功。无论验证成功或失败,都将继续验证链接列表中的下一个验证模块。

  8. 输入验证链的选项。这将以“关键字=值”对的形式为模块启用附加选项。多个选项之间用空格分隔。

  9. 定义以下属性:

    成功登录 URL

    指定验证成功后将用户重定向至的 URL。

    登录失败 URL

    指定验证失败后将用户重定向至的 URL。

    验证后期处理类

    定义用于在登录成功或失败后自定义后期验证处理的 Java 类的名称。

  10. 单击“保存”。

验证类型

“验证服务”提供了几种不同的验证方法。可通过指定登录 URL 参数或通过验证 API 来使用这些不同的验证方法(有关详细信息,请参见开发者指南中《Sun Java System Access Manager 7.1 Developer’s Guide》中的第 2  章 “Using Authentication APIs and SPIs”)。在能够配置验证模块之前,必须先修改核心验证服务属性“领域验证模块”以包含特定的验证模块名称。

验证配置服务用于定义以下任一验证类型的验证模块:

为其中一种验证类型定义了验证模块后,可以基于成功的或失败的验证进程配置该模块以提供重定向 URL 以及后处理 Java 类规范。

验证类型如何确定访问

对于每种方法,用户验证都可能通过或失败。一旦确定,每种方法都遵守这一过程。步骤 1 到步骤 3 接着成功的验证执行;步骤 4 接着成功和失败的验证执行。

  1. Access Manager 确认验证的用户是否在 Directory Server 数据存储库中定义,以及配置文件是否处于活动状态。

    “核心验证”模块中的“用户概要文件”属性可以定义为必需动态、随用户别名动态变换忽略。在成功的验证之后,Access Manager 确认是否在 Directory Server 数据存储库中定义了验证的用户,并且如果“用户概要文件”值为必需,则确认用户概要文件是否处于活动状态。(这是默认情况。)如果“用户概要文件”是动态配置“验证服务”将在 Directory Server 数据存储库中创建用户概要文件。如果“用户概要文件”被设置成忽略,将不进行用户验证。

  2. 完成验证后期处理 SPI 的执行。

    “核心验证模块”包含一个“验证后期处理类”属性,该属性可以把验证后期处理类的名称作为自己的值。AMPostAuthProcessInterface 是后期处理接口。它可以在验证成功、验证失败或注销时执行。

  3. 以下属性会被添加或更新到会话令牌中,并且用户会话会被激活。

    realm。这是用户所属领域的 DN。

    Principal。这是用户的 DN。

    Principals。这是用户已经验证的名称的列表。(此属性可以有多个值,各值之间以管道符分隔。)

    UserId。这是模块返回的用户 DN,如果是“LDAP”或“成员资格”以外的模块,则为用户名。(所有的“主体”必须映射到同一用户。用户 ID 是它们映射到的用户 DN。)


    注 –

    该属性可能是一个非 DN 值。


    UserToken。这是一个用户名。(所有的“主体”必须映射到同一用户。UserToken 是它们映射到的用户名。)

    Host。这是客户机的主机名或 IP 地址。

    authLevel。这是用户已经验证的最高级别。

    AuthType。这是已对用户进行验证的验证模块的列表,各项之间以管道符分隔(例如 module1|module2|module3)。

    clientType。这是客户机浏览器的设备类型。

    Locale。这是客户机的语言环境。

    CharSet。这是为客户机确定的字符集。

    Role。仅适用于基于角色的验证,这是用户所属的角色。

    Service。仅适用于基于服务的验证,这是用户所属的服务。

  4. 验证成功或失败后,会在该 URL 中查找信息,以重定向用户。

    URL 重定向的位置可以是 Access Manager 页面或 URL。重定向取决于优先顺序,Access Manager 会根据验证方法以及验证的成败,由此优先顺序寻找重定向。此顺序在以下验证方法章节的 URL 重定向部分有详细描述。

URL 重定向

在验证配置服务中,您可以指定成功或不成功验证的 URL 重定向。而 URL 本身是在该服务的“登录成功 URL”和“登录失败 URL”属性中进行定义的。为了启用 URL 重定向,必须将“验证配置”服务添加到您的领域中,以便可以为角色、领域或用户进行配置。添加“验证配置”服务时,请确保添加一个验证模块,例如 LDAP - REQUIRED。

基于领域的验证

此验证方法允许用户向领域或子领域进行验证。这是 Access Manager 的默认验证方法。通过把“核心验证”模块注册到领域,并定义“领域验证配置”属性,可以设置领域的验证方法。

基于领域的验证登录 URL

通过在“用户界面登录 URL”中定义 realm 参数或 domain 参数可以指定验证的领域。验证请求的领域由下列项目按优先级确定:

  1. domain 参数。

  2. realm 参数。

  3. “管理”服务中的 DNS 别名属性的值。

    在调用正确的领域后,可以通过“核心验证服务”中的“领域验证配置”属性获取将验证用户的验证模块。用于指定和启动基于领域的验证的登录 URL 是:


    http://server_name.domain_name:port/amserver/UI/Login
    http://server_name.domain_name:port/amserver/UI/Login?domain=domain_name
    http://server_name.domain_name:port/amserver/UI/Login?realm=realm_name

    如果没有定义参数,将由登录 URL 中指定的服务器主机和域确定领域。


注 –

如果用户是特定领域的成员并且验证到该特定领域,然后又尝试验证至不同领域,则只会传送 realmmodule 这两个参数。例如,如果 User1realmA 的成员并且验证到该领域,然后又尝试切换或验证到 realmB,则用户将收到一个警告页面,要求用户使用为 realmB 指定的模块实例启动到 realmB 的新验证,或返回 realmA 中现有的验证会话。如果选择验证到 realmB,则只会传送和使用领域名称和模块名称(如果指定)来确定新的验证过程。


基于领域的验证重定向 URL

在基于组织的验证成功或失败后,Access Manager 会查找信息以重定向用户。下面是应用程序查找这些信息的优先顺序。

成功的基于领域的验证重定向 URL

成功的基于领域的验证重定向 URL 通过按优先顺序检查以下位置来确定:

  1. 验证模块设置的 URL。

  2. goto 登录 URL 参数设置的 URL。

  3. clientType 自定义文件中为用户概要文件 (amUser.xml)iplanet-am-user-success-url 属性设置的 URL。

  4. clientType 自定义文件中为用户角色条目的 iplanet-am-auth-login-success-url 属性设置的 URL。

  5. clientType 自定义文件中为用户领域条目的 iplanet-am-auth-login-success-url 属性设置的 URL。

  6. clientType 自定义文件中为 iplanet-am-auth-login-success-url 属性设置的作为全局默认值的 URL。

  7. 用户概要文件 (amUser.xml) 的 iplanet-am-user-success-url 属性中设置的 URL。

  8. 用户角色条目的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  9. 用户领域条目的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  10. iplanet-am-auth-login-success-url 属性中设置的作为全局默认值的 URL。

失败的基于领域的验证重定向 URL

失败的基于领域的验证重定向 URL 通过按下列顺序检查以下位置来确定:

  1. 验证模块设置的 URL。

  2. gotoOnFail 登录 URL 参数设置的 URL。

  3. clientType 自定义文件中为用户条目 (amUser.xml) 的 iplanet-am-user-failure-url 属性设置的 URL。

  4. clientType 自定义文件中为用户角色条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  5. clientType 自定义文件中为用户领域条目的 iplanet-am-auth-login-failure-ur 属性设置的 URL。

  6. clientType 自定义文件中为 iplanet-am-auth-login-failure-url 属性设置的作为全局默认值的 URL。

  7. 为用户条目 (amUser.xml) 的 iplanet-am-user-failure-url 属性设置的 URL。

  8. 为用户角色条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  9. 为用户领域条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  10. iplanet-am-auth-login-failure-url 属性设置的作为全局默认值的 URL。

配置基于领域的验证

要为领域设置验证模块,先为领域添加“核心验证”服务。

Procedure配置领域的验证属性

  1. 找到要为其添加“验证链”的领域。

  2. 单击“验证”选项卡。

  3. 选择“默认验证链”。

  4. 从下拉菜单中选择“管理员验证链”。如果需要将管理员的验证模块与最终用户的验证模块区别开来,则可以使用该属性。默认验证模块为 LDAP。

  5. 定义验证链之后,单击“保存”。

基于组织的验证

此验证类型只适用于在“传统”模式下安装的 Access Manager 部署。

此验证方法允许用户向组织或子组织进行验证。这是 Access Manager 的默认验证方法。通过把“核心验证”模块注册到组织,并定义“组织验证配置”属性,可以设置组织的验证方法。

基于组织的验证登录 URL

通过在“用户界面登录 URL”中定义 org 参数或 domain 参数可以指定验证的组织。验证请求的组织由下列项目按优先级确定:

  1. domain 参数。

  2. org 参数。

  3. “管理服务”中的 DNS 别名(组织别名)属性值。

    在调用正确的组织后,可以通过“核心验证服务”中的“组织验证配置”属性获取将验证用户的验证模块。用于指定和启动基于组织的验证的登录 URL 是:


    http://server_name.domain_name:port/amserver/UI/Login
    http://server_name.domain_name:port/amserver/UI/Login?domain=domain_name
    http://server_name.domain_name:port/amserver/UI/Login?org=org_name

    如果没有定义参数,将由服务器主机和登录 URL 指定的域确定组织。


注 –

如果用户是特定组织的成员并且验证到该特定组织,然后又尝试验证至不同组织,则只会传送 orgmodule 这两个参数。例如,如果 User1orgA 的成员并且验证到该领域,然后又尝试切换或验证到 orgB,则用户将收到一个警告页面,要求用户使用为 orgB 指定的模块实例启动到 orgB 的新验证,或返回 orgA 中现有的验证会话。如果选择验证到 orgB,则只会传送和使用组织名称和模块名称(如果指定)来确定新的验证过程。


基于组织的验证重定向 URL

在基于组织的验证成功或失败后,Access Manager 会查找信息以重定向用户。下面是应用程序查找这些信息的优先顺序。

成功的基于组织的验证重定向 URL

成功的基于组织的验证重定向 URL 通过按优先顺序检查以下位置来确定:

  1. 验证模块设置的 URL。

  2. goto 登录 URL 参数设置的 URL。

  3. clientType 自定义文件中为用户概要文件 (amUser.xml)iplanet-am-user-success-url 属性设置的 URL。

  4. clientType 自定义文件中为用户角色条目的 iplanet-am-auth-login-success-url 属性设置的 URL。

  5. clientType 自定义文件中为用户组织条目的 iplanet-am-auth-login-success-url 属性设置的 URL。

  6. clientType 自定义文件中为 iplanet-am-auth-login-success-url 属性设置的作为全局默认值的 URL。

  7. 用户概要文件 (amUser.xml) 的 iplanet-am-user-success-url 属性中设置的 URL。

  8. 用户角色条目的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  9. 用户组织条目的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  10. iplanet-am-auth-login-success-url 属性中设置的作为全局默认值的 URL。

失败的基于组织的验证重定向 URL

失败的基于组织的验证重定向 URL 通过按以下顺序检查以下位置来确定:

  1. 验证模块设置的 URL。

  2. gotoOnFail 登录 URL 参数设置的 URL。

  3. clientType 自定义文件中为用户条目 (amUser.xml) 的 iplanet-am-user-failure-url 属性设置的 URL。

  4. clientType 自定义文件中为用户角色条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  5. clientType 自定义文件中为用户组织条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  6. clientType 自定义文件中为 iplanet-am-auth-login-failure-url 属性设置的作为全局默认值的 URL。

  7. 为用户条目 (amUser.xml) 的 iplanet-am-user-failure-url 属性设置的 URL。

  8. 为用户角色条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  9. 为用户组织条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  10. iplanet-am-auth-login-failure-url 属性设置的作为全局默认值的 URL。

配置基于组织的验证

要为组织设置验证模块,先为组织添加“核心验证”服务。

Procedure配置组织的验证属性

  1. 找到要为其添加“验证链”的组织。

  2. 单击“验证”选项卡。

  3. 选择“默认验证链”。

  4. 从下拉菜单中选择“管理员验证链”。如果需要将管理员的验证模块与最终用户的验证模块区别开来,则可以使用该属性。默认验证模块为 LDAP。

  5. 定义验证链之后,单击“保存”。

基于角色的验证

此验证方法允许用户向领域或子领域内的角色(静态或过滤)进行验证。


注 –

“验证配置服务”在作为实例注册到角色以前,必须首先注册到领域。


验证要想成功,用户必须属于该角色,并且必须向为该角色配置的“验证配置服”实例中定义的每个模块进行验证。每个基于角色验证的实例均可指定下列属性:

冲突解决级别。此属性为可能包含相同用户的两个不同角色定义的“验证配置服务”实例设置优先级级别。例如,如果 User1 同时分配给 Role1Role2,则可以为 Role1 设置较高的冲突解决级别。这样,当用户试图进行验证时,Role1 将优先进行成功或失败重定向以及验证后期处理。

验证配置。此属性定义为角色验证过程配置的验证模块。

登录成功 URL。此属性定义在验证成功后用户被重定向到的 URL。

登录失败 URL。此属性定义在验证失败后用户被重定向到的 URL。

验证后期处理类。此属性定义验证后期界面。

基于角色的验证登录 URL

通过定义 role 参数,可以在“用户界面登录 URL”中指定基于角色的验证。在调用正确的角色后,可以通过为角色定义的“验证配置服务”实例获取将要验证用户的验证模块。

用于指定和启动基于角色的验证的登录 URL 是:

http://server_name.domain_name:port/amserver/UI/Login?role=role_name
http://server_name.domain_name:port/amserver/UI/Login?realm=realm_name&role=role_name

如果没有配置 realm 参数,将通过在登录 URL 中指定的服务器主机和域来确定角色所属的领域。

基于角色的验证重定向 URL

在基于角色的验证成功或失败后,Access Manager 会查找信息以重定向用户。下面是应用程序查找这些信息的优先顺序。

成功的基于角色的验证重定向 URL

成功的基于角色的验证重定向 URL 通过按以下顺序检查以下位置来确定:

  1. 验证模块设置的 URL。

  2. goto 登录 URL 参数设置的 URL。

  3. clientType 自定义文件中为用户概要文件 (amUser.xml) 的 iplanet-am-user-success-url 属性设置的 URL。

  4. clientType 自定义文件中为用户已验证的角色的 iplanet-am-auth-login-success-url 属性设置的 URL。

  5. clientType 自定义文件中为已验证用户的另一个角色条目的 iplanet-am-auth-login-success-url 属性设置的 URL。(如果以前的重定向 URL 失败,此选项是一个替代方法。)

  6. clientType 自定义文件中为用户领域条目的 iplanet-am-auth-login-success-url 属性设置的 URL。

  7. clientType 自定义文件中为 iplanet-am-auth-login-success-url 属性设置的作为全局默认值的 URL。

  8. 用户概要文件 (amUser.xml) 的 iplanet-am-user-success-url 属性中设置的 URL。

  9. 用户已验证角色的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  10. 已验证用户的另一个角色条目的 iplanet-am-auth-login-success-url 属性中设置的 URL。(如果以前的重定向 URL 失败,此选项是一个替代方法。)

  11. 用户领域条目的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  12. iplanet-am-auth-login-success-url 属性中设置的作为全局默认值的 URL。

失败的基于角色的验证重定向 URL

失败的基于角色的验证重定向 URL 通过按以下顺序检查以下位置来确定:

  1. 验证模块设置的 URL。

  2. goto 登录 URL 参数设置的 URL。

  3. clientType 自定义文件中为用户概要文件 (amUser.xml) 的 iplanet-am-user-failure-url 属性设置的 URL。

  4. clientType 自定义文件中为用户已验证的角色的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  5. clientType 自定义文件中为已验证用户的另一个角色条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。(如果以前的重定向 URL 失败,此选项是一个替代方法。)

  6. clientType 自定义文件中为用户领域条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  7. clientType 自定义文件中为 iplanet-am-auth-login-failure-url 属性设置的作为全局默认值的 URL。

  8. 用户概要文件 (amUser.xml)iplanet-am-user-failure-url 属性中设置的 URL。

  9. 用户已验证角色的 iplanet-am-auth-login-failure-url 属性中设置的 URL。

  10. 已验证用户的另一个角色的 iplanet-am-auth-login-failure-url 属性中设置的 URL。(如果以前的重定向 URL 失败,此选项是一个替代方法。)

  11. 用户领域条目的 iplanet-am-auth-login-failure-url 属性中设置的 URL。

  12. iplanet-am-auth-login-failure-url 属性中设置的作为全局默认值的 URL。

Procedure配置基于角色的验证

  1. 找到要添加验证配置服务的领域(或组织)。

  2. 单击“主题”选项卡。

  3. “过滤的角色”或“角色”。

  4. 选择要为其设置验证配置的角色。

  5. 选择要启用的“默认验证链”。

  6. 单击“保存”。


    注 –

    如果要创建新角色,验证配置服务将不会自动指定给该角色。请确保在创建新角色之前先选择“角色配置文件”页面顶部的“验证配置”服务选项。

    如果启用了基于角色的验证,可以将 LDAP 验证模块保留为默认设置,因为不需要配置成员资格。


基于服务的验证

此验证方法允许用户向在领域或子领域中注册的特定服务或应用程序进行验证。服务在“验证配置服务”内配置成“服务实例”,并且与“实例名称”关联。验证要想成功,用户必须向为服务配置的“验证配置”服务实例中定义的每个模块进行验证。每个基于服务验证的实例均可指定下列属性:

验证配置。此属性定义为服务验证进程配置的验证模块。

登录成功 URL。此属性定义在验证成功后用户被重定向到的 URL。

登录失败 URL。此属性定义在验证失败后用户被重定向到的 URL。

验证后期处理类。此属性定义验证后期界面。

基于服务的验证登录 URL

通过定义 service 参数,可以在“用户界面登录 URL”中指定基于服务的验证。在调用服务后,可以通过为服务定义的“验证配置”服务实例获取将要验证用户的验证模块。

用来指定和启动基于服务的验证的登录 URL 是:

http://server_name.domain_name:port/amserver/UI/
Login?service=auth-chain-name

http://server_name.domain_name:port/amserver/UI/Login?realm=realm_name&service=auth-chain-name

如果没有配置 realm 参数,将通过在登录 URL 中指定的服务器主机和域来确定用户所属的领域。

基于服务的验证重定向 URL

在基于服务的验证成功或失败后,Access Manager 会查找信息以重定向用户。下面是应用程序查找这些信息的优先顺序。

成功的基于服务的验证重定向 URL

成功的基于服务的验证重定向 URL 通过按以下顺序检查以下位置来确定:

  1. 验证模块设置的 URL。

  2. goto 登录 URL 参数设置的 URL。

  3. clientType 自定义文件中为用户概要文件 (amUser.xml) 的 iplanet-am-user-success-url 属性设置的 URL。

  4. clientType 自定义文件中为用户已验证服务的 iplanet-am-auth-login-success-url 属性设置的 URL。

  5. clientType 自定义文件中为用户角色条目的 iplanet-am-auth-login-success-url 属性设置的 URL。

  6. clientType 自定义文件中为用户领域条目的 iplanet-am-auth-login-success-url 属性设置的 URL。

  7. clientType 自定义文件中为 iplanet-am-auth-login-success-url 属性设置的作为全局默认值的 URL。

  8. 用户概要文件 (amUser.xml) 的 iplanet-am-user-success-url 属性中设置的 URL。

  9. 用户已验证服务的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  10. 用户角色条目的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  11. 用户领域条目的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  12. iplanet-am-auth-login-success-url 属性中设置的作为全局默认值的 URL。

失败的基于服务的验证的重定向 URL

失败的基于服务的验证重定向 URL 通过按以下顺序检查以下位置来确定:

  1. 验证模块设置的 URL。

  2. goto 登录 URL 参数设置的 URL。

  3. clientType 自定义文件中为用户概要文件 (amUser.xml) 的 iplanet-am-user-failure-url 属性设置的 URL。

  4. clientType 自定义文件中为用户已验证服务的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  5. clientType 自定义文件中为用户角色条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  6. clientType 自定义文件中为用户领域条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  7. clientType 自定义文件中为 iplanet-am-auth-login-failure-url 属性设置的作为全局默认值的 URL。

  8. 用户概要文件 (amUser.xml) 的 iplanet-am-user-failure-url 属性中设置的 URL。

  9. 用户已验证服务的 iplanet-am-auth-login-failure-url 属性中设置的 URL。

  10. 用户角色条目的 iplanet-am-auth-login-failure-url 属性中设置的 URL。

  11. 用户领域条目的 iplanet-am-auth-login-failure-url 属性中设置的 URL。

  12. iplanet-am-auth-login-failure-url 属性中设置的作为全局默认值的 URL。

Procedure配置基于服务的验证

服务的验证模块是在添加了“验证配置”服务之后设置的。为此,请执行以下步骤:

  1. 选择要配置基于服务的验证的领域。

  2. 单击“验证”选项卡。

  3. 创建验证模块实例。

  4. 创建验证链。

  5. 单击“保存”。

  6. 要访问领域的基于服务的验证,请输入以下地址:

    http://server_name.domain_name:port/amserver/UI/Login?realm=realm_name&service=auth-chain-name

基于用户的验证

此验证方法允许用户向专门为其配置的验证进程进行验证。这个过程被配置成用户概要文件中的“用户验证配置”属性值。验证要想成功,用户必须向定义的每个模块验证。

基于用户的验证登录 URL

通过定义 user 参数,可以在“用户界面登录 URL”中指定基于用户的验证。在调用正确的用户后,可以通过为用户定义的“用户验证配置”实例获取将要验证用户的验证模块。

用于指定和启动基于角色的验证的登录 URL 是:

http://server_name.domain_name:port/amserver/UI/Login?user=user_name
http://server_name.domain_name:port/amserver/UI/Login?org=org_name&user=user_name

如果没有配置 realm 参数,将通过登录 URL 中指定的服务器主机和域来确定角色所属的领域。

用户别名列表属性

在收到基于用户的验证请求时,“验证”服务会先验证用户是否为有效的用户,然后为其检索“验证配置”数据。如果有多个与用户登录 URL 参数值关联的有效用户概要文件,则所有配置文件都必须映射到指定的用户。可以在用户概要文件的“用户别名属性” (iplanet-am-user-alias-list) 中指定属于该用户的其他概要文件。如果映射失败,将拒绝该用户进行有效的会话。例外情况是,如果用户之一是顶级管理员,则不进行用户映射验证,并且用户被授予顶级管理员权限。

基于用户的验证重定向 URL

在基于模块的验证成功或失败后,Access Manager 会查找信息以重定向用户。下面是应用程序查找这些信息的优先顺序。

成功的基于用户的验证重定向 URL

成功的基于用户的验证重定向 URL 通过按优先顺序检查以下位置来确定:

  1. 验证模块设置的 URL。

  2. goto 登录 URL 参数设置的 URL。

  3. clientType 自定义文件中为用户概要文件 (amUser.xml)iplanet-am-user-success-url 属性设置的 URL。

  4. clientType 自定义文件中为用户角色条目的 iplanet-am-auth-login-success-url 属性设置的 URL。

  5. clientType 自定义文件中为用户领域条目的 iplanet-am-auth-login-success-url 属性设置的 URL。

  6. clientType 自定义文件中为 iplanet-am-auth-login-success-url 属性设置的作为全局默认值的 URL。

  7. 用户概要文件 (amUser.xml) 的 iplanet-am-user-success-url 属性中设置的 URL。

  8. 用户角色条目的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  9. 用户领域条目的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  10. iplanet-am-auth-login-success-url 属性中设置的作为全局默认值的 URL。

失败的基于用户的重定向 URL

失败的基于用户的验证重定向 URL 通过按以下顺序检查以下位置来确定:

  1. 验证模块设置的 URL。

  2. gotoOnFail 登录 URL 参数设置的 URL。

  3. clientType 自定义文件中为用户条目 (amUser.xml) 的 iplanet-am-user-failure-url 属性设置的 URL。

  4. clientType 自定义文件中为用户角色条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  5. clientType 自定义文件中为用户领域条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  6. clientType 自定义文件中为 iplanet-am-auth-login-failure-url 属性设置的作为全局默认值的 URL。

  7. 为用户条目 (amUser.xml) 的 iplanet-am-user-failure-url 属性设置的 URL。

  8. 为用户角色条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  9. 为用户领域条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  10. iplanet-am-auth-login-failure-url 属性设置的作为全局默认值的 URL。

Procedure配置基于用户的验证

  1. 找到要在其中为用户配置验证的领域。

  2. 单击“主题”选项卡,然后单击“用户”。

  3. 单击要修改的用户的名称

    将显示“用户概要文件”。


    注 –

    如果要创建新用户,验证配置服务将不会自动指定给该用户。请确保在创建用户之前先选择服务配置文件中的“验证配置”服务选项。如果未选择此选项,用户将不会继承为角色定义的验证配置。


  4. 在“用户验证配置”属性中,选择您想要使用的验证链。

  5. 单击“保存”。

基于验证级别的验证

每个验证模块均可以与其验证级别的整数值相关联。更改模块的“验证级别”属性相应的值,可以指定验证级别。用户一个或多个验证模块的验证后,验证级别越高,则用户的信任级别就越高。

用户成功地通过模块的验证之后,系统将在用户的 SSO 令牌中设置验证级别。如果用户需要通过多个验证模块的验证并且成功地通过了这些验证,系统将在用户的 SSO 令牌中设置其中最高的验证级别值。

如果用户试图访问某个服务,该服务可以通过查看用户的 SSO 令牌中的验证级别来确定是否允许该用户进行访问。随后服务将用户重定向,使用户以设定的验证级别通过验证模块。

用户还可以访问具有特定验证级别的验证模块。例如,用户使用以下语法进行登录:

http://hostname:port/deploy_URI/UI/Login?authlevel=
auth_level_value

所有验证级别高于或等于 auth_level_value 的模块将显示为验证菜单以供用户选择。如果只找到了一个匹配的模块,则会直接显示该验证模块的登录页。

此验证方法可让管理员指定验证身份的模块的安全级别。每个验证模块都有单独的“验证级别”属性,此属性的值可以定义为任何有效的整数。利用基于“验证级别”的验证,“验证服务”会显示一个模块登录页面,其中有一个菜单,包含验证级别等于或大于登录 URL 参数所指定的值的验证模块。用户可以从提供的列表中选择模块。在用户选择模块之后,剩余的进程取决于基于模块的验证。

基于验证级别的验证登录 URL

通过定义 authlevel 参数,可以在“用户界面登录 URL”中指定基于验证级别的验证。在调用含有相关模块列表的登录屏幕之后,用户必须选择一个用于验证的模块。用于指定和启动基于验证级别的验证的登录 URL 是:

http://server_name.domain_name:port/amserver/UI/Login?authlevel=authentication_level

http://server_name.domain_name:port/amserver/UI/
Login?realm=realm_name&authlevel=authentication_level

如果没有配置 realm 参数,将通过登录 URL 中指定的服务器主机和域来确定用户所属的领域。

基于验证级别的验证重定向 URL

在基于验证级别的验证成功或失败后,Access Manager 会查找信息以重定向用户。下面是应用程序查找这些信息的优先顺序。

成功的基于验证级别的验证重定向 URL

成功的基于验证级别的验证重定向 URL 通过按优先顺序检查以下位置来确定:

  1. 验证模块设置的 URL。

  2. goto 登录 URL 参数设置的 URL。

  3. clientType 自定义文件中为用户概要文件 (amUser.xml) 的 iplanet-am-user-success-url 属性设置的 URL。

  4. clientType 自定义文件中为用户角色条目的 iplanet-am-auth-login-success-url 属性设置的 URL。

  5. clientType 自定义文件中为用户领域条目的 iplanet-am-auth-login-success-url 属性设置的 URL。

  6. clientType 自定义文件中为 iplanet-am-auth-login-success-url 属性设置的作为全局默认值的 URL。

  7. 用户概要文件 (amUser.xml)iplanet-am-user-success-url 属性中设置的 URL。

  8. 用户角色条目的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  9. 用户领域条目的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  10. iplanet-am-auth-login-success-url 属性中设置的作为全局默认值的 URL。

失败的基于验证级别的验证重定向 URL

失败的基于验证级别的验证重定向 URL 通过按以下顺序检查以下位置来确定:

  1. 验证模块设置的 URL。

  2. gotoOnFail 登录 URL 参数设置的 URL。

  3. clientType 自定义文件中为用户条目 (amUser.xml) 的 iplanet-am-user-failure-url 属性设置的 URL。

  4. clientType 自定义文件中为用户角色条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  5. clientType 自定义文件中为用户领域条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  6. clientType 自定义文件中为 iplanet-am-auth-login-failure-url 属性设置的作为全局默认值的 URL。

  7. 为用户条目 (amUser.xml)iplanet-am-user-failure-url 属性设置的 URL。

  8. 为用户角色条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  9. 为用户领域条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  10. iplanet-am-auth-login-failure-url 属性设置的作为全局默认值的 URL。

基于模块的验证

用户可以使用以下语法访问特定的验证模块:

http://hostname:port/deploy_URI/UI/Login?module=
module_name

在能够访问验证模块之前,必须先修改核心验证服务属性“领域验证模块”以包含该验证模块名称。如果此属性中不包含该验证模块名称,则当用户尝试进行验证时,将会显示“验证模块被拒绝”页面。

此验证方法允许用户指定用来进行验证的模块。指定的模块必须向用户正在访问的领域或子领域注册。这是在领域的“核心验证服务”的“领域验证模块”属性中进行配置的。在收到基于模块的验证请求时,“验证服务”会验证模块是否按要求正确配置,如果该模块未定义,将拒绝用户访问。

基于模块的验证登录 URL

通过定义 module 参数,可以在“用户界面登录 URL”中指定基于模块的验证。用来指定和启动基于模块的验证的登录 URL 是:

http://server_name.domain_name:port/amserver/UI/Login?module=authentication_module_name
http://server_name.domain_name:port/amserver/UI/
Login?org=org_name&module=authentication_module_name

如果没有配置 realm 参数,将通过登录 URL 中指定的服务器主机和域来确定用户所属的领域。

基于模块的验证重定向 URL

在基于模块的验证成功或失败后,Access Manager 会查找信息以重定向用户。下面是应用程序查找这些信息的优先顺序。

成功的基于模块的验证重定向 URL

成功的基于模块的验证重定向 URL 通过按优先顺序检查以下位置来确定:

  1. 验证模块设置的 URL。

  2. goto 登录 URL 参数设置的 URL。

  3. clientType 自定义文件中为用户概要文件 (amUser.xml) 的 iplanet-am-user-success-url 属性设置的 URL。

  4. clientType 自定义文件中为用户角色条目的 iplanet-am-auth-login-success-url 属性设置的 URL。

  5. clientType 自定义文件中为用户领域条目的 iplanet-am-auth-login-success-url 属性设置的 URL。

  6. clientType 自定义文件中为 iplanet-am-auth-login-success-url 属性设置的作为全局默认值的 URL。

  7. 用户概要文件 (amUser.xml)iplanet-am-user-success-url 属性中设置的 URL。

  8. 用户角色条目的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  9. 用户领域条目的 iplanet-am-auth-login-success-url 属性中设置的 URL。

  10. iplanet-am-auth-login-success-url 属性中设置的作为全局默认值的 URL。

失败的基于模块的验证重定向 URL

失败的基于模块的验证重定向 URL 通过按以下顺序检查以下位置来确定:

  1. 验证模块设置的 URL。

  2. gotoOnFail 登录 URL 参数设置的 URL。

  3. clientType 自定义文件中为用户条目 (amUser.xml) 的 iplanet-am-user-failure-url 属性设置的 URL。

  4. clientType 自定义文件中为用户角色条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  5. clientType 自定义文件中为用户领域条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  6. clientType 自定义文件中为 iplanet-am-auth-login-failure-url 属性设置的作为全局默认值的 URL。

  7. 为用户角色条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  8. 为用户领域条目的 iplanet-am-auth-login-failure-url 属性设置的 URL。

  9. iplanet-am-auth-login-failure-url 属性设置的作为全局默认值的 URL。

用户界面登录 URL

在 Web 浏览器的“地址栏”中输入登录 URL 可访问“验证服务”用户界面。该 URL 是:

http://AccessManager-root/.domain_name:port /service_deploy_uri /UI/Login


注 –

在安装过程中,service_deploy_uri 被配置为 amserver。此默认服务部署 URI 将在本文档的全文中使用。


用户界面登录 URL 也可以附加登录 URL 参数来定义特定的验证方法或成功/失败的验证重定向 URL。

登录 URL 参数

URL 参数是附加在 URL 末尾的名称/值对。该参数以问号 (?) 开始,格式为 name=value。一个登录 URL 可以组合使用多个参数,如:

http://server_name.domain_name:port/amserver/UI/
Login?module=LDAP&locale=ja&goto=http://www.sun.com

如果存在多个参数,参数之间用 (&) 号分隔。但组合必须遵守以下原则:

以下各节描述各参数,这些参数在附加到“用户界面登录 URL”并键入 Web 浏览器的“地址栏”中时,可获取不同的验证功能。


注 –

为简化验证 URL 和参数以便在整个领域内分发,管理员可配置一个具备简单 URL 的 HTML 网页,该页面可链接到更复杂的登录 URL 以获取所有已配置的验证方法。


goto 参数

goto=successful_authentication_URL 参数覆写在“验证配置”服务的“登录成功 URL”中定义的值。当验证成功时,将链接到指定的 URL。goto=logout_URL 参数也可用于在用户注销时链接到指定的 URL。成功的验证 URL 示例如下:

http://server_name.domain_name:port/amserver/
UI/Login?goto=http://www.sun.com/homepage.html

goto 注销 URL 的示例如下:

http://server_name.domain_name:port/amserver/
UI/Logout?goto=http://www.sun.com/logout.html。

注 –

Access Manager 按优先顺序查找成功的验证重定向 URL。因为这些重定向 URL 及其顺序基于验证方法,所以此顺序(和相关信息)在“验证类型”部分中进行详细介绍。


gotoOnFail 参数

gotoOnFail=failed_authentication_URL 参数覆写在“验证配置”服务的“登录失败 URL”中定义的值。如果用户验证失败,将链接到指定的 URL。例如,gotoOnFail URL 可能是 http://server_name.domain_name:port/amserver/UI/Login?gotoOnFail=http://www.sun.com/auth_fail.html


注 –

Access Manager 按优先顺序查找失败的验证重定向 URL。因为这些重定向 URL 及其顺序基于验证方法,所以此顺序(和相关信息)在“验证类型”部分中进行详细介绍。


realm 参数

realm=realmName 参数允许用户作为指定领域中的用户进行验证。


注 –

尚未成为指定领域成员的用户如果试图使用 realm 参数进行验证,会收到一条错误消息。如果以下所有条件均为 TRUE,则可在 Directory Server 中动态创建用户概要文件:

使用此参数,将会显示正确的登录页面(基于领域及其语言环境设置)。如果未设置此参数,默认值是顶层领域。例如,realm URL 可以是:

http://server_name.domain_name:port/amserver/UI/Login?realm=sun

org 参数

org=orgName 参数可让用户作为指定组织中的用户进行验证。


注 –

尚未成为指定组织成员的用户如果试图使用 org 参数进行验证,会收到一条错误消息。如果以下所有条件均为 TRUE,则可在 Directory Server 中动态创建用户概要文件:

使用此参数,将会显示正确的登录页面(基于组织及其语言环境设置)。如果未设置此参数,默认值是顶层组织。例如,org URL 可以是:

http://server_name.domain_name:port/amserver/UI/Login?org=sun

user 参数

user=userName 参数强制使用在用户概要文件的“用户验证配置”属性中配置的模块进行验证。例如,可以将一个用户的概要文件配置为使用“认证”模块进行验证,同时可以将另一个用户配置为使用 LDAP 模块进行验证。添加此参数会将用户发送到其配置的验证进程,而非为其组织配置的方法。例如:

http://server_name.domain_name:port/amserver/UI/Login?user=jsmith

role 参数

role=roleName 参数会把用户发送到为指定的角色配置的验证过程。尚未成为指定角色成员的用户如果试图用此参数进行验证,会收到一条错误消息。例如:

http://server_name.domain_name:port/amserver/UI/Login?role=manager。

locale 参数

Access Manager 可为验证进程以及控制台本身显示本地化屏幕(翻译成英语以外的语言)。locale=localeName 参数指定的语言环境具有比其他任何已定义的语言环境更高的优先权。在以下位置按顺序搜索配置之后,客户机会显示登录语言环境:

  1. 登录 URL 中的 locale 参数值

    locale=localeName 参数的值的优先级高于所有其他定义的语言环境。

  2. 用户概要文件中定义的语言环境

    如果没有 URL 参数,则根据用户概要文件中“用户首选语言”属性的设置值显示语言环境。

  3. HTTP 标题中定义的语言环境

    此语言环境由 Web 浏览器设置。

  4. “核心验证服务”中定义的语言环境

    这是“核心验证”模块中“默认验证语言环境”属性的值。

  5. “平台”服务中定义的语言环境

    这是“平台”服务中“平台语言环境”属性的值。

操作系统语言环境

从此等级顺序得到的语言环境存储在用户的会话令牌中,Access Manager 只使用它来加载本地化验证模块。在成功验证之后,将使用用户概要文件中的“用户首选语言”属性定义的语言环境。如果没有设置,将继续使用验证所用的语言环境。例如:


http://server_name.domain_name:port/amserver/UI/Login?locale=ja。

注 –

有关如何本地化屏幕文本和错误消息的信息可以在 Access Manager 中找到。


module 参数

module=moduleName 参数允许通过指定验证模块进行验证。可以指定任何模块,但它们必须首先在用户所属领域下注册并作为“核心验证”模块中该领域的验证模块之一被选定。例如:

http://server_name.domain_name:port/amserver/UI/Login?module=Unix。

注 –

验证模块名称用在 URL 参数中时区分大小写。


service 参数

service=serviceName 参数允许用户通过服务的已配置验证方案进行验证。使用“验证配置”服务可以为不同的服务配置不同的验证方案。例如,联机薪金应用程序可能需要使用更安全的“证书验证”模块进行验证,而领域的员工目录应用程序可能只需要“LDAP 验证”模块。可以为这些服务中的每一个配置并命名验证方案。例如:

http://server_name.domain_name:port/amserver/UI/Login?service=sv1。

注 –

“验证配置”服务用来为基于服务的验证定义方案。


arg 参数

arg=newsession 参数用于终止用户的当前会话并开始一个新会话。“验证服务”将通过一个请求销毁用户的现有会话令牌并执行新的登录。此选项通常用于“匿名验证”模块。用户首先使用匿名会话进行验证,然后单击注册或登录链接。例如:

http://server_name.domain_name:port/amserver/UI/Login?arg=newsession。

authlevel 参数

authlevel=value 参数告知“验证服务”调用验证级别等于或大于指定验证级别值的模块。每个验证模块都定义了一个固定整数的验证级别。例如:

http://server_name.domain_name:port/amserver/UI/Login?authlevel=1.

注 –

“验证级别”设置在特定于每个模块的配置文件中。


domain 参数

此参数允许用户登录到标识为指定域的领域。指定域必须与领域配置文件的“域名”属性中定义的值相匹配。例如:

http://server_name.domain_name:port/amserver/UI/Login?domain=sun.com.

注 –

尚未成为指定域/领域成员的用户如果试图使用 domain 参数进行验证,会收到一条错误消息。如果以下所有条件均为 TRUE,则可在 Directory Server 中动态创建用户概要文件:


iPSPCookie 参数

iPSPCookie=yes 参数允许用户以一个持久 cookie 登录。当浏览器窗口关闭以后,持久 cookie 继续存在。要使用此参数,用户所登录的领域必须在其“核心验证”模块中启用“持久 Cookie”。一旦用户进行验证并关闭浏览器,用户可以使用新的浏览器会话登录并定向至控制台而无需重新验证。这将一直有效,直到经过“核心服务”中指定的“持久 Cookie 最长时间”属性值为止。例如:

http://server_name.domain_name:port/amserver/UI/Login?org=example&iPSPCookie=yes

IDTokenN 参数

此参数选项允许用户以 URL 或 HTML 表单传送验证证书。用户可使用 IDTokenN=value 参数通过验证,而无需访问“验证服务用户界面”。此进程称为零页面登录。零页面登录仅适用于使用一个登录页面的验证模块。IDToken0, IDToken1, ..., IDTokenN 的值映射到验证模块登录页面上的字段。例如,LDAP 验证模块可能将 IDToken1 用于 userID 信息,将 IDToken2 用于密码信息。 在这种情况下,LDAP 模块 IDTokenN URL 是:

http://server_name.domain_name:port/amserver/UI/
Login?module=LDAP&IDToken1=userID&IDToken2=password

(如果 LDAP 是默认的验证模块,则可以省略 module=LDAP。)

对于匿名验证,登录 URL 参数是:

http://server_name.domain_name:port/amserver/UI/Login?module=Anonymous&IDToken1=anonymousUserID。

注 –

仍支持令牌名称 Login.Token0Login.Token1 ... Login.TokenN(来自先前的版本),但在以后的版本中将不再支持。建议使用新的 IDTokenN 参数。


帐户锁定

“验证服务”提供这样一项功能:在验证失败次数超过某个特定值后将锁定用户。此功能默认情况下是关闭的,但是可以使用 Access Manager 控制台启用它。


注 –

只有抛出“密码无效”异常的模块可以使用“帐户锁定”功能。


“核心验证”服务包含用于启用和自定义此功能的属性,包括但不限于:

有关任何帐户锁定的电子邮件通知都会发送给管理员。(还会记录帐户锁定活动。)


注 –

有关在 Microsoft® Windows 2000 操作系统上使用此功能的特殊说明,参见附录 A,“AMConfig.properties 文件”中的“简单邮件传输协议 (SMTP)”。”


Access Manager 支持两种类型的帐户锁定:“物理锁定”和“内存锁定”,具体在以下几节中定义。

物理锁定

这是 Access Manager 的默认锁定行为。通过将用户概要文件中 LDAP 属性的状态更改为不活动可以启动此锁定。锁定属性名属性定义用来进行锁定的 LDAP 属性。


注 –

别名用户是通过配置 LDAP 配置文件中的“用户别名列表属性”(amUser.xml 中的 iplanet-am-user-alias-list) 映射到现有 LDAP 用户概要文件的用户。别名用户可以通过将 iplanet-am-user-alias-list 添加到“核心验证服务”中的“别名搜索属性名称”字段来进行验证。也就是说,如果别名用户被锁定,则该别名用户映射至的实际 LDAP 配置文件也将被锁定。这只适合于 LDAP 及“成员资格”以外的验证模块的物理锁定。


内存锁定

登录失败锁定时间属性的值更改为大于 0,可启用内存锁定。用户的帐户会在内存中锁定指定的分钟数。 帐户将在经过该时间段之后解除锁定。以下是使用内存锁定功能时的一些特殊注意事项:


注 –

如果在用户的概要文件中设置了“失败 URL”属性,则无论是锁定警告消息,还是表示其帐户已锁定的消息,都不会显示;用户将被重定向至定义的 URL。


验证服务故障转移

如果主服务器因硬件或软件问题失败或者服务器临时关闭,则验证服务故障转移会自动将验证请求重定向到辅助服务器。

必须首先在提供验证服务的 Access Manager 实例上创建验证环境。如果此 Access Manager 实例不可用,则可通过验证故障转移机制在其他的 Access Manager 实例上创建验证环境。验证环境将按以下顺序检查服务器可用性。

  1. 验证服务 URL 将被传递给 AuthContext API。例如:


    AuthContext(orgName, url)

    如果使用此 API,则它将仅使用由 URL 所引用的服务器。即使在该服务器中提供了验证服务,也不会进行故障转移。

  2. 验证环境将检查在 AMConfig.properties 文件的 com.iplanet.am.server* 属性中定义的服务器。

  3. 如果步骤 2 失败,则验证环境将从提供有命名服务的服务器查询平台列表。此平台列表是在安装共享同一个 Directory Server 实例的多个 Access Manager 实例(通常是为故障转移目的)时自动创建的。

    例如,如果该平台列表包含 Server1Server 2Server 3 的 URL,则验证环境会在 Server 1Server 2Server 3 之间循环,直到验证在其中一个服务器上成功为止。

    平台列表可能不会始终从同一个服务器获得,因为它取决于命名服务的可用性。而且,可能会首先进行命名服务故障转移。多个命名服务 URL 在 com.iplanet.am.naming.url 属性AMConfing.properties 中)中指定。第一个可用的命名服务 URL 将用于确定服务器,该服务器中包含将会进行验证故障转移的服务器(限于其平台服务器列表范围内)的列表。

全限定域名映射

全限定域名 (Fully Qualified Domain Name, FQDN) 映射可让“验证服务”在用户键入错误的 URL(例如指定部分主机名或 IP 地址来访问受保护的资源)时进行纠正。FQDN 映射通过修改 AMConfig.properties 文件中的 com.sun.identity.server.fqdnMap 属性来启用。用于指定此属性的格式为:

com.sun.identity.server.fqdnMap[invalid-name ]=valid-name

invalid-name 是用户可能键入的无效 FQDN 主机名,valid-name 是过滤器将用户重定向到的实际主机名。只要符合规定的要求,可以指定任意数量的映射(如代码示例 1-1 所示)。如果未设置此属性,用户将被发送到 AMConfig.propertiess 文件的 com.iplanet.am.server.host= server_name 属性中配置的默认服务器名称。


示例 4–1 AMConfig.properties 中的 FQDN 映射属性


com.sun.identity.server.fqdnMap[isserver]=isserver.mydomain.com
com.sun.identity.server.fqdnMap[isserver.mydomain]=isserver.mydomain.com
com.sun.identity.server.fqdnMap[
            IP address]=isserver.mydomain.com


         

FQDN 映射的可能用途

此属性可用于为多个主机名创建映射,例如在服务器上的应用程序可由多个主机名访问时便可使用此属性。此属性也可用于配置 Access Manager 使其对特定的 URL 不进行纠错。例如,如果使用 IP 地址访问应用程序的用户不需要重定向,可以通过指定如下映射条目来实现此功能:

com.sun.identity.server.fqdnMap[IP address]=IP address


注 –

如果定义了多个映射,请确保无效的 FQDN 名称中没有重叠的值。否则可能导致无法访问应用程序。


持久 Cookie

持久 Cookie 在 Web 浏览器关闭之后继续存在,用户可以使用新的浏览器会话登录而无需重新验证。Cookie 的名称由 AMConfig.properties 中的 com.iplanet.am.pcookie.name 属性定义;默认值是 DProPCookie。Cookie 值是 3DES 加密字符串,包含用户 DN、领域名称、验证模块名称、最长会话时间、空闲时间和高速缓存时间。

Procedure启用持久 Cookie

  1. 在“核心验证”模块中打开持久 Cookie 模式

  2. 在核心验证模块中的持久 Cookie 最长时间属性配置时间值。

  3. 将值为 yes 的 iPSPCookie 参数附加到“用户界面登录 URL”。

    一旦用户使用此 URL 进行验证,如果浏览器被关闭,用户可以打开新的浏览器窗口并重定向到控制台而无需重新验证。这在到达步骤 2 所定义的时间之前一直有效。

    可以使用“验证 SPI”方法打开“持久 Cookie”模式:

    AMLoginModule.setPersistentCookieOn()

传统模式下的多 LDAP 验证模块配置

作为一种故障转移形式,或当 Access Manager 控制台仅提供一个值字段时要配置属性的多个值,管理员可以在一个领域下定义多个 LDAP 验证模块配置。尽管这些附加配置无法通过控制台查看,但如果未找到对于请求用户的授权的初始搜索,这些配置可与主配置一起发挥作用。例如,一个领域可以定义在两个不同的域中搜索 LDAP 服务器进行验证,也可以在一个域中配置多个用户命名属性。对于后者,控制台中只有一个文本字段,如果使用主要搜索条件找不到用户,LDAP 模块将使用第二个范围搜索。以下是配置其他 LDAP 配置的步骤。

Procedure添加其他 LDAP 配置

  1. 编写一个 XML 文件,在其中包括完整的属性集和第二个(或第三个)LDAP 验证配置所需的新值。

    可以通过查看 etc/opt/SUNWam/config/xml 中的 amAuthLDAP.xml 来引用可用的属性。但此步骤创建的 XML 文件是基于 amadmin.dtd 结构的,这与 amAuthLDAP.xml 不同。可以为此文件定义任何或所有属性。代码示例 1-2 是一个子配置文件的示例,该文件包括 LDAP 验证配置可用的所有属性的值。


    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!--
      Copyright (c) 2002 Sun Microsystems, Inc. All rights reserved.
      Use is subject to license terms.
    -->
    <!DOCTYPE Requests
        PUBLIC "-//iPlanet//Sun ONE Access Manager 6.0 Admin CLI DTD//EN"
        "jar://com/iplanet/am/admin/cli/amAdmin.dtd"
    >
    <!--
      Before adding subConfiguration load the schema with
    GlobalConfiguration defined and replace corresponding
     serviceName and subConfigID in this sample file OR load
     serviceConfigurationRequests.xml before loading this sample
    -->
    <Requests>
    <realmRequests DN="dc=iplanet,dc=com">
        <AddSubConfiguration subConfigName = "ssc"
            subConfigId = "serverconfig"
            priority = "0" serviceName="iPlanetAMAuthLDAPService">
    
                  <AttributeValuePair>
                <Attribute name="iplanet-am-auth-ldap-server"/>
                <Value>vbrao.red.iplanet.com:389</Value>
            </AttributeValuePair>
            <AttributeValuePair>
                <Attribute name="iplanet-am-auth-ldap-base-dn"/>
                <Value>dc=iplanet,dc=com</Value>
            </AttributeValuePair>
            <AttributeValuePair>
                <Attribute name="planet-am-auth-ldap-bind-dn"/>
                <Value>cn=amldapuser,ou=DSAME Users,dc=iplanet,dc=com</Value>
            </AttributeValuePair>
            <AttributeValuePair>
                <Attribute name="iplanet-am-auth-ldap-bind-passwd"/>
                <Value>
                      plain text password</Value>
            </AttributeValuePair>
            <AttributeValuePair>
                <Attribute name="iplanet-am-auth-ldap-user-naming-attribute"/>
                <Value>uid</Value>
            </AttributeValuePair>
            <AttributeValuePair>
                <Attribute name="iplanet-am-auth-ldap-user-search-attributes"/>
                <Value>uid</Value>
            </AttributeValuePair>
            <AttributeValuePair>
                <Attribute name="iplanet-am-auth-ldap-search-scope"/>
                <Value>SUBTREE</Value>
            </AttributeValuePair>
            <AttributeValuePair>
                <Attribute name="iplanet-am-auth-ldap-ssl-enabled"/>
                <Value>false</Value>
            </AttributeValuePair>
            <AttributeValuePair>
                <Attribute name="iplanet-am-auth-ldap-return-user-dn"/>
                <Value>true</Value>
            </AttributeValuePair>
            <AttributeValuePair>
                <Attribute name="iplanet-am-auth-ldap-auth-level"/>
                <Value>0</Value>
            </AttributeValuePair>
            <AttributeValuePair>
                <Attribute name="iplanet-am-auth-ldap-server-check"/>
                <Value>15</Value>
            </AttributeValuePair>
    
        </AddSubConfiguration>
    
    </realmRequests>
    </Requests>
    
    
                   
  2. 复制纯文本密码作为在步骤 1 中创建的 XML 文件中的 iplanet-am-auth-ldap-bind-passwd 的值。

    在代码示例中,此属性的值被格式化为粗体。

  3. 使用 amadmin 命令行工具装入 XML 文件。


    ./amadmin -u amadmin -w administrator_password -v -t name_of_XML_file.

    请注意,第二个 LDAP 配置不可见,也不能用控制台修改。


    提示 –

    多个 LDAP 配置有可供使用的样例。参见 /AccessManager-base/SUNWam/samples/admin/cli/bulk-ops/ 中的 serviceAddMultipleLDAPConfigurationRequests.xml 命令行模板。可以在 /AccesManager-base/SUNWam/samples/admin/cli/Readme.html 中找到说明


会话升级

验证服务允许根据同一用户向一个领域执行的第二次成功验证来升级有效的会话令牌。如果拥有有效会话令牌的用户尝试向其当前领域保护的资源验证,并且这第二次验证请求成功,则该会话将用基于新验证的新属性更新。如果验证失败,用户的当前会话将返回而不进行升级。如果拥有有效会话的用户尝试向不同领域保护的资源验证,该用户将会收到一条询问他们是否要向新领域验证的消息。此时用户可以保持当前的会话,也可以尝试向新领域进行验证。成功的验证将损坏原来的会话,并创建新会话。

在会话升级期间,如果登录页面超时,就会重定向到原来的成功 URL。超时值取决于:

com.iplanet.am.invalidMaxSessionTimeoutiplanet-am-max-session-time 的值应大于页面超时值,否则在会话升级期间的有效会话信息将丢失,到以前的成功 URL 的 URL 重定向也将失败。

验证插件接口

管理员可以编写适用于其领域的用户名或密码验证逻辑,并将其插入“验证服务”。(只有 LDAP 和“成员资格”验证模块支持此项功能。)在验证用户或更改密码之前,Access Manager 将调用此插件。如果验证成功,验证将会继续;如果验证失败,将会抛出验证失败页面。插件扩展了作为“服务管理 SDK”一部分的 com.iplanet.am.sdk.AMUserPasswordValidation 类。有关此 SDK 的信息可以在 Access Manager Javadocs 的 com.iplanet.am.sdk 软件包中找到。

Procedure编写和配置验证插件

  1. 新的插件类将扩展 com.iplanet.am.sdk.AMUserPasswordValidation 类,并实现 validateUserID()validatePassword() 方法。如果验证失败,将抛出 AMException

  2. 编译插件类并将 .class 文件放置到所需的位置。更新类路径,使其在运行时可供 Access Manager 访问。

  3. 以顶级管理员身份登录 Access Manager 控制台。单击“配置”选项卡,转至“管理服务”的属性。在“用户 ID 和密码验证插件类”字段中键入插件类的名称(包括软件包的名称)。

  4. 注销,然后登录。

JAAS 共享状态

JAAS 共享状态可在验证模块之间共享用户 ID 和密码。为以下每个验证模块都定义了选项:

如果失败,模块会提示所需的证书。 在验证失败后,模块会停止运行,或者清除注销共享状态。

启用 JAAS 共享状态

配置 JAAS 共享状态:

在失败时,验证模块会根据 JAAS 规范中建议的 tryFirstPass 选项行为,提示用户提供所需的证书。

JAAS 共享状态存储选项

配置 JAAS 共享状态存储选项:

在提交、中止或注销后,将清除共享状态。