前言: 前些日子寫了一篇關于JAAS+LDAP在JBOSS上的配置: http://blog.csdn.net/oicqren/archive/2004/11/27/195803.aspx 現將其移植到Websphere上,這個過程比JBOSS復雜。同樣是整天在網上搜啊、試啊、問啊,打電話騷擾IBM工程師啊!說來奇怪,就是沒人能給一準確答案。也許是老婆來深圳看我,帶來很多支持與運氣。今天解決了這個問題,貼出來。 ps.更多安全信息請參考紅皮書:sg246573
目標: 使用JAAS框架,使用LDAP Server,使用Websphere,做用戶的驗證和授權 (驗證的含義是用戶有效,即用戶名、密碼輸入正確;授權的含義是用戶被授予某種角色)
基礎要求: 精通J2EE框架 熟悉iPlanet Directory Server配置 熟悉Websphere配置 熟悉JAAS框架
準備: windows 2k (要加入域) j2sdk1.4.2 installed Websphere 5.1.x Or Webphsere installed iPlanet Directory Server 5.1 Service Pack 2 installed
假設: 應用名稱為myApp
應用中需要配置的point-list: web.xml application.xml ibm-application-bnd.xmi iPlanet Directory Server用戶和角色 websphere admin console:安全性>JAAS 配置>應用程序登錄 websphere admin console:安全性>用戶注冊表>LDAP websphere admin console:安全性>全局安全性 websphere admin console:應用程序>企業應用程序>myApp>映射安全性角色到用戶/組 可選配置點: websphere admin console:安全性>認證機制>LTPA
另外: 可以通過WAS AAT工具、或者WSAD開發工具、文本編輯器來修改下面的配置。但要做到配置相同。 我用UltraEdit修改的。所以下面的方法沒有工具的介紹。
[web.xml] --------------------------------------------------------------------------------------------- 是什么我不用說了吧!在</web-app></web-app>標簽中增加下面一段。 <security-constraint>:安全約束的表述 <url-pattern>: 被限定在安全約束中的資源文件名模式*.jsp代表所有jsp文件,*.do代表struts的所有Action <http-method>: 被限定在安全約束中的訪問方法 <auth-constraint>: 那一種角色可以認為有權限訪問資源 <auth-method>: 驗證授權的方式,此處必須是FORM類型 </realm-name>: 安全域名稱 <form-login-page>: 如果還沒有做驗證,將轉向到此頁面 <form-error-page>: 如果驗證未通過,將轉向到此頁面 <security-role>: 描述一下上面用到的角色 <security-constraint> <web-resource-collection> <web-resource-name>Restricted</web-resource-name> <description>Declarative security tests</description> <url-pattern>*.do</url-pattern> <url-pattern>*.jsp</url-pattern> <http-method>HEAD</http-method> <http-method>GET</http-method> <http-method>POST</http-method> <http-method>PUT</http-method> <http-method>DELETE</http-method> </web-resource-collection> <auth-constraint> <role-name>icpuser</role-name> </auth-constraint> <user-data-constraint> <description>no description</description> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint> </security-constraint> <login-config> <auth-method>FORM</auth-method> <realm-name>icprealm</realm-name> <form-login-config> <form-login-page>/login.do</form-login-page> <form-error-page>/LogError.do</form-error-page> </form-login-config> </login-config> <security-role> <description>A user allowed to login</description> <role-name>icpuser</role-name> </security-role> ---------------------------------------------------------------------------------------------
[application.xml] --------------------------------------------------------------------------------------------- 不說了,J2EE開發人員都應該認識它。 修改<display-name>myApp</display-name> 在<application></application>標簽中增加下面一段。id="......"很重要不能省略。 <security-role id="SecurityRole_1"> <description>role-icpuser</description> <role-name>icpuser</role-name> </security-role> ---------------------------------------------------------------------------------------------
[ibm-application-bnd.xmi] --------------------------------------------------------------------------------------------- 在"應用程序>安裝新的應用程序"功能中將自己的程序成功發布之后。 檢查$WAS_HOME\config\cells\zkf5011\applications\myApp.ear\deployments\myApp\META-INF\ibm-application-bnd.xmi文件是否存在下面配置,如果沒有請添加。這里的<role href="META-INF/application.xml#......"/>很重要,必須和application.xml的<security-role id="......">相同,都為"SecurityRole_1" <authorizationTable> <authorizations xmi:id="RoleAssignment_1"> <role href="META-INF/application.xml#SecurityRole_1"/> </authorizations> <authorizationTable>
|