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 應用程序來部署,無任何 障礙。