- 浏览: 924678 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (322)
- Hibernate研究&源码 (27)
- Server (10)
- Coder碎语 (64)
- EnglishMulling (11)
- About XML (1)
- persistence (12)
- Core Java & OO (23)
- Java EE (6)
- JavaScript/JSON/Ajax/ext... (22)
- 我的读书笔记 (16)
- Source Codes Study (29)
- workFlow/jBPM (22)
- OFBiz: Open For Business (1)
- 项目积累 (21)
- srcStudy_acegi (1)
- Cache/Ehcache... (9)
- Java Test/JUnit.. (7)
- maven/ant (2)
- 设计模式 (1)
- SOA/cxf/ws-security (2)
- Android (4)
- 云计算/Hadoop (2)
- 加密/签名 (1)
- 正则表达式 (1)
- htmlparser (1)
- 操作系统 (5)
- DB (1)
最新评论
-
天使建站:
这里这篇文章更详细 还有完整的实例演示:js跳出循环 ...
jQuery中each的break和continue -
heshifk:
刚刚我也遇到同样的问题,然后就在纠结为什么不能直接使用brea ...
jQuery中each的break和continue -
masuweng:
不错写的.
集万千宠爱于一身的SessionImpl:get研究(四): Hibernate源码研究碎得(8) -
muzi131313:
这个老是忘,做一下笔记还是挺好的
jQuery中each的break和continue -
lg068:
data = data.replace("\n&qu ...
项目小经验: eval与回车符
上篇博客中,我们以静态地角度对Acegi的核心概念及其实现上的核心部件进行了谈讨,本这篇中,我们将结合一个Web程序来体会并介绍下在Web项目中配置Acegi里都有哪些关键点。
我们知道Acegi可以多种实用场景,但现在用的最多的还是在Web项目中,这里不再介绍配置的具体步骤,直接将一个配置好的Web项目传了上来(只做了那些必要的配置),见附件,不出意外的话,这个例子可以在Eclipse里直接运行,Eclipse版本为3.4.0。
下面的介绍都是以这个Web例子为介绍的, 大家最好先把例子下载下来体会下, 先大致地看下web.xml和application_acegi_context.xml这两个文件的内容, 以对Acegi的配置有个直观的印象.
咱们从web.xml文件开始.
我们看到这个文件特简单, 一共就context-param,filter,filter-mapping,listener,welcome-file-list五个配置元素. 先从最熟悉的配置元素逐个排除.第一个
welcome-
file-list不必多说, 排除掉. 再看listener,由于Acegi是建立在Spring框架上的,
这里通过listener来初始化Spring的Context是情理之中的, 也就不必再多考虑.
有了listener的理解基础,我们再看context-param也就明白了,这个元素把Acegi的配置文件
applicationContext-acegi-security.xml
提供给Spring.下面进入Acegi在Web应用中的关键部件Filter, 我们知道Acegi在Web应用方面的一个基本原理就是Servlet的Filter,这里配置中Filter实现类是
FilterToBeanProxy, 它有一个配置参数targetClass,其值为
FilterChainProxy, 这个Filter的配置很简单, 大多数
情况下我们可以直接从现有的例子中拷来就行, 很少需要做什么配置上的改动.不过,若想把Acegi工作原理及其工作细节搞明白的话,这个FilterToBeanProxy到
FilterChainProxy的转换是不能躲过的关键点,再进一步想, 看人家是怎么设计实现的对自己的"钱途"也是大有帮助的吧?从我自身的体会上来看,
FilterToBeanProxy和
FilterChainProxy两个类在设计上很有"嚼头",我想着在另外的博客中单独来看它们的实现与给自己的启发, 这里我们先有这样的一个概念:
FilterToBeanProxy在
doFilter时会从Spring的Context里get出
FilterChainProxy的实例,
FilterChainProxy自身也是一个Filter的实现类,它在
applicationContext-acegi-security.xml文件中初始化, 这样,
FilterToBeanProxy就把经过它的所有请求转给了
FilterChainProxy来处理, 这样就上了Acegi的道儿,也就是拦截下来的请求在真正做事前需得到Acegi的许可.
下面我们来看
applicationContext-acegi-security.xml文件,上面的分析我们得出,
FilterToBeanProxy把拦截下的请求交给了
FilterChainProxy来处理, 这个处理就是Acegi的核心概念Authentication和Authorization的实现.
在这个文件中我们首先看到如下的配置信息:
<bean id="filterChainProxy"
class="org.acegisecurity.util.FilterChainProxy">
<property name="filterInvocationDefinitionSource">
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/login.jsp=#NONE#
/**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
</value>
</property>
</bean>
在上面介绍
web.xml文件内容时,我们提到FilterToBeanProxy从Spring的Contextget出
FilterToBeanProxy的实例,上面的配置信息让Spring来初始化
FilterChainProxy
类,随便说下, 这里
FilterChainProxy实现的id没有用到,再进一步想,Spring可以不用id再用类名就可以得到其实例.回到正题,
FilterChainProxy类有一个名为
filterInvocationDefinitionSource
的属性, 通过这个属性, Acegi把拦截下来的请求再一次转移.
我们先看
filterInvocationDefinitionSource属性里又都有些什么?从上面我们看到, value里是一些字符串描述的信息,这里有一个与当前Acegi不相干的思考:
setFilterInvocationDefinitionSource方法的参数类型是
FilterInvocationDefinitionSource,Spring是怎么把一个String类型的信息自动转成所需要的
FilterInvocationDefinitionSource类型的呢?这个问题在这里先不思考.回到正题, 属性
filterInvocationDefinitionSource里配置的关键信息是"
/**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
", 从下面的配置可以看出,
httpSessionContextIntegrationFilter,authenticationProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
几个Bean都是Filter接口的实现类,这几个Filter的实现类再调用上一篇博客里提到的"七剑"
实现Authentication和Authoriaztion的"理想".
那"七剑"是怎么与"
httpSessionContextIntegrationFilter,authenticationProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
"们配置的的呢?且看下回.
- myOwnAcegi.rar (7.7 MB)
- 下载次数: 289
评论
博主,方便加入“权限管理”圈子吗?然后把文章发布到圈子里面。权限管理,是我开辟专门讨论权限管理的。我对acegi不大了解,目前圈子里面还没用acegi文章呢。圈子地址:http://accessmanager.group.iteye.com/
好的, 很乐意与大家交流, 我整理下后就发过去.
然后把文章发布到圈子里面。
权限管理,是我开辟专门讨论权限管理的。我对acegi不大了解,目前圈子里面还没用acegi文章呢。
圈子地址:
http://accessmanager.group.iteye.com/
发表评论
-
Spring下配置job
2010-07-20 15:58 3398没什么可说的, 今天把以前配置的一个job重新整理了下,用ma ... -
研究下Spring中AOP的实现?
2010-06-03 17:57 1321碰到一个AOP的问题, 见“用Spring的 ... -
Debug地研究Hibernate分页功能过程中的另外收获
2009-12-17 15:04 13191, 如用MySQL,其分页sql是啥样的: selec ... -
CJC(二): abstract、子类与多态的单例模式
2009-03-16 10:33 2250CJC是Common Java Cookbo ... -
CJC(一): ToStringBuilder两种方法用法优缺点及一个问题
2009-03-15 20:37 4030CJC是Common Java Cookbook的缩 ... -
研究源码的新天地: 避害趋利
2009-03-14 14:48 1637前两篇分别描述了"为什么要研究源码" ... -
Acegi(十三): 让系统记住我
2009-03-13 09:59 2477经过一段时间的总结, 对Acegi的初步研究终于到 ... -
研究源码的新天地: 研究源码的痛苦
2009-03-12 15:50 1757上篇 中,写了出于什 ... -
研究源码的新天地: 为什么研究源码?
2009-03-11 21:03 1900把前些列出的一个 ... -
Acegi(十二): anonymousProcessingFilter有什么好玩的?
2009-03-09 17:47 2431在这篇博客中, 我们接着看另一个Filter, ano ... -
Acegi(十一): 借鉴Acegi的Exception的异常处理
2009-03-05 11:16 1493今天改项目中的一个问题时, 不由自住地想到了Acegi异 ... -
Acegi(十): securityContextHolderAwareRequestFilter结
2009-03-04 21:46 1842在Acegi(八) 和Acegi ... -
Acegi(九): 子类SavedRequestAwareWrapper
2009-03-02 22:27 2223上篇 中我们对 securi ... -
Acegi(八): securityContextHolderAwareRequestFilter
2009-03-01 22:03 2404上篇 中我们说了下 LogoutFilter的配置, 这篇 ... -
Acegi(七): LogoutFilter配置及几个问题
2009-02-28 18:49 2836这些天有点懒散, 想 ... -
Acegi源码研究(六): Acegi编码/设计碎得
2009-02-18 22:28 1620前些天通过一个Acegi的Web实例,我们感受了下 ... -
Acegi源码研究(五):七剑下天山
2009-02-17 23:10 2008在Acegi初体验及初解剖(http://rmn19 ... -
CoreJava: 第一次用LinkedHashSet带来的思考(二)
2009-02-15 21:05 1543在第一次用LinkedHa ... -
CoreJava: 第一次用LinkedHashSet带来的思考(一)
2009-02-14 19:34 8278用Java虽说时间不 ... -
Acegi(三): Acegi? Who are you?
2009-02-13 08:38 2439Acegi是个什么? ...
相关推荐
JAVA开发专家:敏捷Acegi、CAS:构建安全的Java系统 pdf
Acegi是一个专门为SpringFramework应用提供安全机制的开放源代码项目,全称为Acegi Security System for Spring,当前版本为 0.8.3。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和...
而Acegi Security是Spring社区早期的一个安全模块,它提供了全面的身份验证、授权和会话管理功能,为基于Spring的应用程序提供了强大的安全性支持。本实战教程将深入探讨如何将Acegi Security集成到Spring框架中,...
《实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架》这本书提供了一个很好的起点,它详细介绍了如何设置和使用Acegi,以及如何解决实际开发中的安全问题。 总的来说,Acegi为基于Spring的Web应用提供...
7. **记住我(Remember Me)服务**:Acegi提供了“记住我”功能,允许用户在一段时间内无须重新登录即可访问系统,增强了用户体验。 通过本实战教程,读者将学习到如何设置Acegi安全框架,创建自定义认证和授权逻辑...
被解剖的acegi配置文件. 博文链接:https://rmn190.iteye.com/blog/175041
- **身份验证(Authentication)**:Acegi 提供了多种身份验证机制,如基于密码的认证、LDAP认证等,确保只有合法用户能够访问系统资源。 - **授权(Authorization)**:Acegi 提供细粒度的权限控制,允许开发者...
在《实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架.pdf》中,可能会详细讲解如何配置和使用Acegi。以下是一些关键步骤: 1. **添加依赖**:首先,在项目中引入Acegi的依赖库,通常是通过Maven或...
3. **会话管理(Session Management)**:Acegi提供了会话管理功能,可以防止会话固定攻击(Session Fixation),并支持会话超时和并发会话控制。 4. **过滤器安全链(Filter Security Interceptor)**:Acegi的...
此外,Acegi Security提供的特性如“记住我”功能和“Run-as”机制,进一步增强了用户体验和系统的安全性。 使用Acegi Security,开发者可以构建出符合企业级需求的安全系统,同时避免了因更换服务器环境而需要大量...
- AceGI:AceGi Security,一个用于Spring Web应用的安全框架。 - CAS:Central Authentication Service,中心认证服务,提供单一登录解决方案。 - SSO:Single Sign-On,单点登录,用户只需登录一次就能访问所有...
3. **访问控制表达式(ACE)**:Acegi Security支持基于方法的安全性,允许你使用访问控制表达式(如`@Secured("ROLE_ADMIN")`)来指定只有具有特定角色的用户才能执行某个方法。 4. **会话管理**:它提供会话固定...
5. **会话管理**:Acegi提供了会话管理功能,如会话固定攻击防护、会话超时检测和并发会话控制,以防止恶意用户同时使用同一用户的多个会话。 6. **事件监听**:Acegi允许监听和处理安全相关的事件,如登录成功、...
【Acegi框架介绍 acegi安全与认证】 Acegi Security,现称为Spring Security,是一个强大的安全框架,主要用于基于Spring的企业级应用。它通过Spring的依赖注入(IoC)和面向切面编程(AOP)功能,提供了声明式的...
Spring Acegi是一个安全框架,它为Spring应用提供了一套强大的身份验证和授权机制。这个框架在Spring Security(之前称为Spring Security)之前被广泛使用。在本文中,我们将深入探讨Spring Acegi的核心概念、功能和...
Acegi安全系统,是一个用于Spring Framework的安全框架,能够和目前流行的Web容器无缝集成。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全...
1. URL资源的访问控制:Acegi能够设定不同用户群体对网页资源的访问权限。例如,所有用户可以访问登录页面,但只有经过授权的用户才能访问特定的业务功能页面。 2. 业务类方法的访问控制:Acegi能够控制Spring容器...
此外,Acegi还提供了Remember Me服务,允许用户在一段时间内无须重新登录,提高了用户体验。这个功能可以通过配置`RememberMeAuthenticationProvider`来实现。 总的来说,Spring Acegi Security提供了一套全面的Web...
Acegi 是一个强大的 Java 安全框架,专用于系统安全编程,尤其在处理认证和授权方面表现出色。在本文中,我们将深入探讨 Acegi 的基本概念、如何设置以及它如何与 Spring 框架集成。 首先,让我们了解 Acegi 的核心...