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