源码提供 —— 使用Apache Commons HttpClient灵活实现JAAS签权(转)
JavaEE提供了JAAS安全机制,在架构一个web系统时,可以根据这个标准来保护系统的安全。
先对JAAS标准作个简单介绍,JAAS为Java企业应用提供了安全规范和接口,规范主要由JavaEE服务器实现,接口则面向服务实现以及应用开发。一个安全的web系统,必须对其访问用户进行访问范围的控制,在JAAS中,这种控制体现在用户的角色上。举个例子,假设一个web系统(假设为http://www.asys.com)有两个受保护的url资源分别为Area-1(http://www.asys.com/areaone)和Area-2(http://www.asys.com/areatwo),系统中有两种角色Role1和Role2,根据约定,只有属于Role1的用户才能访问Area-1,另外只有拥有Role2角色的用户才能访问Area-2,如何实现呢?很简单,根据JAAS标准,可以通过在一个JavaEE服务器中进行相应的配置来实现声明式的JAAS安全。以tomcat5.0为例,首先,在conf/tomcat-users.xml这个文件,你可以定义用户信息和角色对应关系:
具体思路是这样的,在服务器端获取到用户名、密码、sessionid、并生成j_security_check的完整url路径,调用 JSecurityCheckHelper这个对象的doCheck方法就可以完成签权,同时JSecurityCheckHelper还支持SSL和服务代理(这可是花了老黄近一个月的心血啊)。JSecurityCheckHelper的代码骨架如下:package laohuang.helper.jaas; /** * <code>JSecurityCheckHelper</code>利用HttpClient实现JAAS签权。 * * @author newman.huang * @version 1.0 2007/2/26 */ public class JSecurityCheckHelper { private HttpClient httpClient; static{ loadProxyConfig(); registerHttps(); } //加载代理属性 private static void loadProxyConfig(){ ... } //注册https协议以支持HttpClient通过SSL通讯 @SuppressWarnings("deprecation") private static void registerHttps(){ ... } /** * 构建。 * */ public JSecurityCheckHelper(){ ... } /** * 执行j_security_check。 */ public String doCheck(String userName, String password, String jSessionId, String jSecCheckFullURL) throws SecurityCheckException { ... } //设置代理以通过代理执行j_security_check校验 private void setProxy(){ ... } //生成HttpClient Cookie private Cookie genRequestCookie(String jSessionId,String fullURL){ ... } //通过url获取cookie的域名 private static String parseCookieDomainName(String url){ ... } //辅助方法,执行一个get请求,仅供测试使用 private void doGetRequest(String url){ ... } //辅助方法,获取当前JSESSIONID,仅供测试使用 private String getJSessionId(){ ... } ... }本实现可以解决j_security_check Form验证的不灵活弊端,也可以将代码集成到有需要的客户端测试当中,另外,可以充当学习HttpClient的范例代码。正如硬币都有正反两面,这个解决方案没有遵循server/Client分离的实现原则,如果放置在服务器端,在不同的应用环境下,需要处理的细节过多,比如需要关注传输协议细节(SSL),是否使用代理等等,尽管如此,</login-config></login-config>JSecurityCheckHelper还是都为你提供了这些实现。
<login-config><login-config> </login-config></login-config>
JSecurityCheckHelper.zip (7.8 KB)
相关推荐
abfdada 2020-08-26
凉白开 2020-07-19
Lzs 2020-10-23
聚合室 2020-11-16
零 2020-09-18
Justhavefun 2020-10-22
jacktangj 2020-10-14
ChaITSimpleLove 2020-10-06
Andrea0 2020-09-18
周游列国之仕子 2020-09-15
afanti 2020-09-16
88234852 2020-09-15
YClimb 2020-09-15
风雨断肠人 2020-09-04
卖口粥湛蓝的天空 2020-09-15
stulen 2020-09-15
pythonxuexi 2020-09-06