安装、配置和部署 Sun Java System Access Manager 的简便方法
Sun Java System 7.1(下面简称 Access Manager)集成了身份验证和授权服务、策略代理、身份管理以及身份联合,从而保护网络资源。这样,您就可以为资源访问提供安全保障,d d d d 并且可以管理访问这些资源的用户的身份。
可以将 Access Manager 部署在符合 Java Servlet 2.3 API Specification 的大多数平台上和大多数容器(即大多数 Web 服务器或应用程序服务器)上。d d d d 然而事实并非始终如此;请参见 附录。
本文将介绍在 Sun Java System Application Server(以下简称 Application Server)上安装、配置和部署 Access Manager 的一种简便高效的方法,Application Server 也是一个称作 GlassFish 的开放源代码项目。一般而言,完成整个过程花不了 10 分钟时间,因而对于原型尤为方便。
首先,请下载以下软件:
派生自 GlassFish 的 Sun Application Server Platform Edition 9.0 或更新版本
Access Manager
ZIP 文件包含特定于 Java Development Kit (JDK) 版本的 Web 归档 (WAR) 文件、进行分布式身份验证的应用程序、管理性命令行接口 (CLI) 工具、会 话故障转移工具、法律文件以及运行示例的过程。将文件解压缩到所选目录,该目录在本文其余部分称作 Access_Manager_install_dir。图 1 显示了此目录的文件结构。
图 1:Access Manager 的文件结构
jdk14 与 jdk15 二进制文件之间的主要区别在于文件大小。Sun 的 JDK 1.5.x 包括 Java Web Services Developer Pack (Java WSDP) 的大多数 Java archive (JAR) 文件,但是,这些文件并 不是运行于 Sun JDK 1.5.x 下的容器的 Access Manager 的组成部分。本文中的示例将使用 Access_Manager_install_dir /applications/jdk15 下的 amserver.war 文件。
配置应用服务器
如果已在 Java 虚拟机中启用 Security Manager,则需要将 Access Manager 的相关许可权限添加到 Application Server 的 server.policy 文件中,如下所示。
// ADDITIONS FOR Access Manager
grant codeBase "file:${com.sun.aas.instanceRoot}/applications/j2ee-modules/amserver/-" {
permission java.net.SocketPermission "*", "connect,accept,resolve";
permission java.util.PropertyPermission "*", "read, write";
permission java.lang.RuntimePermission "modifyThreadGroup";
permission java.lang.RuntimePermission "setFactory";
permission java.lang.RuntimePermission "accessClassInPackage.*";
permission java.util.logging.LoggingPermission "control";
permission java.lang.RuntimePermission "shutdownHooks";
permission javax.security.auth.AuthPermission "getLoginConfiguration";
permission javax.security.auth.AuthPermission "setLoginConfiguration";
permission javax.security.auth.AuthPermission "modifyPrincipals";
permission javax.security.auth.AuthPermission "createLoginContext.*";
permission java.io.FilePermission "<<ALL FILES>>", "execute,delete";
permission java.util.PropertyPermission "java.util.logging.config.class", "write";
permission java.security.SecurityPermission "removeProvider.SUN";
permission java.security.SecurityPermission "insertProvider.SUN";
permission javax.security.auth.AuthPermission "doAs";
permission java.util.PropertyPermission "java.security.krb5.realm", "write";
permission java.util.PropertyPermission "java.security.krb5.kdc", "write";
permission java.util.PropertyPermission "java.security.auth.login.config", "write";
permission java.util.PropertyPermission "user.language", "write";
permission javax.security.auth.kerberos.ServicePermission "*", "accept";
permission javax.net.ssl.SSLPermission "setHostnameVerifier";
permission java.security.SecurityPermission "putProviderProperty.IAIK";
permission java.security.SecurityPermission "removeProvider.IAIK";
permission java.security.SecurityPermission "insertProvider.IAIK";
};
// END OF ADDITIONS FOR Access Manager
注意:如果使用非 amserver 名称部署 Access Manager 7.1,则需要在 grant 中更改 amserver 字符串。或者只引用 grant {...} 来进行测试。
注意:如果所选容器为 IBM WebSphere,则需要在容器的 server.xml 文件中设置以下两个 Java 虚拟机选项:
-DamCryptoDescriptor.provider=IBMJCE
-DamKeyGenDescriptor.provider=IBMJCE
例如:
genericJvmArguments="-DamCryptoDescriptor.provider=IBMJCE -DamKeyGenDescriptor.provider=IBMJCE"
之后,重新启动应用服务器,使更改生效。
部署和配置 Access Manager
现在将 Access Manager WAR 文件部署到 Sun Java Enterprise System 5 支持的任何 Web 容器上。这包括三个步骤:
部署 WAR 文件。
配置 Access Manager。
验证配置。
部署 WAR 文件
要部署 WAR 文件:
登录 Application Server Administration Console,地址为 http://localhost:4848。
默认用户名为 admin;默认口令为 adminadmin。
在左侧窗格中,选择 Applications 下面的 Web Applications。在右窗格中,指定 Access Manager WAR 文件 (Access_Manager_install_dir /applications/jdk15/amserver.war) 的位置,然后单击 Deploy 按钮。
部署成功之后,应用服务器将在所部署的 Web Application 下显示 amserver,如图 2 所示。
图 2:在应用程序器上成功部署 Access Manager
配置 Access Manager
要配置 Access Manager:
单击 Launch 按钮。
或者,访问 http:// hostname.domain_name .com: portnumber /amserver,其中:
hostname.domain_name .com 是在其上部署 Access Manager 的主机的名称。
portnumber 是 Access Manager 监听传入请求的端口号。
此时将显示 Access Manager Configurator 页面,如图 3 所示。
图 3:应用程序器中的 Configurator 页面
指定 amAdmin 口令(如 admin123)和配置目录(如 /amconfig)。
可选。要将 Sun Java System Directory Server 指定为配置库,需要确保已 安装 Directory Server 实例并且正在运行,然后执行以下操作。
在 Configuration Store Settings 下,选择 Directory Server。
在 Server Settings 下,填写 Name、Port 和 Suffix to store configuration data 字段。
在 Directory Server Administration 下,填写 Password 和 Retype Password 字段。/li>
单击 Configure 按钮。
Access Manager 会显示配置过程的状态。
在本示例中,文件系统(File System)是用于存储服务配置数据的默认系统。即所有服务配置文件都位于 config_dir / deploy_URI /sms 目录下,本例中为 /amconfig/amserver/sms。
成功配置后,Access Manager 将显示登录界面,如图 4 所示。
图 4:Access Manager 登录界面
验证配置
最后,通过登录来验证所做的配置。此时会显示 Access Manager 管理控制台,如图 5 所示。
图 5:Access Manager 管理控制台
了解文件布局
配置过程一经完成,Access Manager 即会在系统中创建下列文件:
配置文件 — 这些文件位于 Configurator 页面指定的目录 (General Settings > Configuration Directory)中。在本例中,该目录称为 /amconfig。图 6 中显示了其文件结构。
图 6:配置目录中的文件结构
Bootstrap 文件 — 这些文件是在特定的 Access Manager 实例中查找配置信息所必需的。根据在同一台主机上配置的实例数,在 某一给定时刻可能存在多个适用的 bootstrap 文件。请 勿删除这些文件。
默认情况下,bootstrap 位于 user.home 目录中。可以根据需要更改该位置。有关该过程的详细信息,请参见 Sun Java System Access Manager 7.1 Postinstallation Guide 中的 "Deploying Access Manager as a Single WAR File" 一节。
Access Manager 构造文件名的方式为编辑 Servlet Context 中的实际路径并将 和 / 符号替换为 _ 符号。例如,如果运行 Application Server 的用户为 root 用户,则本例中的 bootstrap 文件将为 /AccessManager/AMConfig_opt_SUNWappserver_domains_domain1_applications_j2ee-modules_amserver_。6 " 6 < /li>
取消部署 Access Manager
Access Manager 不提供用于取消部署已配置的实例的任何脚本。要取消部署 Access Manager:
使用特定于容器的命令取消部署。
删除配置文件和 bootstrap 文件。
请参见前面的章节。
可选。撤销对服务器策略的更改。
如果需要重新部署 Access Manager,则可以跳过这一步。
重新启动 Web 容器。
重新配置 Access Manager
要在不取消部署 Access Manager 的情况下用不同的配置值进行测试:
删除配置文件和 bootstrap 文件。
重新启动 Web 容器。
访问 http:// hostname.domain_name .com: portnumber /amserver。
此时将显示 Configurator 页面。
附录:今后和现在部署
在其早期版本中,安装程序是将 Access Manager 作为软件包来部署的。它们是以下文件的集合: JAR 文件以及支持 XML、JavaServer Pages (JSP)、HTML 和 GIF 文件,还有区域设置文件以及 AMConfig.properties 和 serverconfig.xml 文件(后者用于目录配置)中的属性。该方法引起了许多问题,如下所列:
安装程序是容器感知的。
安装程序具有与操作系统相关的依赖性。
恢复到原始配置相当复杂。
Access Manager 的大范围分布不可行。
因而 Access Manager 工程团队将目标设定为对可作为 J2EE 应用程序部署的组件重新打包。该目标在 Access Manager 7.1 中得以实现:现在,您 可以方便地将其作为单一 Web 应用程序来部署,无任何障碍。