- 浏览: 908023 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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与回车符
在这篇博客中, 我们接着看另一个Filter, anonymousProcessingFilter.
1, 为什么要配置这个? 它能给我们带来什么好处?
为了解决这个问题,
看了下Acegi的文档
, 但说实在的, 由于文档中用是"convenient"和"nice"这样的词来描述这个filter的好处,
我现在还感觉不到. 这里把我现在给想到的理由总结一下.
- 为了理论上的完美. 用了这个fitler,就可以对系统中所有
的
链接加权限管理了, 像login, logout和home这样的"非常规访问",也可以加一个默认的匿名访问Authentication.
像这样的"非常规访问"是可以在acegi的配置文件中写死的, 当然写死有写死的坏处. 由这个坏处,我们看下一个理由.
- 为 了某个链接的动态设定. 可能会有这样的情况: 一个链接的访问权限刚开始时是有专门的访问权限的, 但由于业务逻辑的变更, 这个链接的权限改为匿名的了,或者说原来的匿名访问要改为具有一定权限访问了. 这时, 为了在不重启服务器情况下设定权限, 就预先配置一个anonymousProcessingFilter, 让它来处理那些默认的情况.
- 别的我现在猜不出来了, 希望大家能补上.
2, 怎么配置?
虽说不是很理解, 但还是要配置的. 那怎么配置呢? 我们先看这个filter所涉及到的三个类:
AnonymousProcessingFilter,
AnonymousAuthenticationToken,AnonymousAuthenticationProvider.
第一个类没什么说的, 它就是这个filter的实现类, 没有它办不成事. 第二个类实际上是一个Authentication,
acegi通过它来加一个默认的匿名Authentication. 第三个类实现了AuthenticationProvider接口,
有了一个匿名的Authentication, 相应地得给一个Provider,
以便在filterInvocationInterceptor检查权限时,被"卡"住. 呵呵, 看到这, 我觉得挺好笑的了:
本身是一个虚头八脑的东西, 为了"掩盖"它, 让在真实世界里行的通, 还得再给弄两个一样虚头八脑的东东陪着.
有了一种大致的了解后, 我们看配置:
2.1 配置anonymousProcessingFilter bean.
<bean id="anonymousProcessingFilter" class="org.acegisecurity.providers.anonymous.AnonymousProcessingFilter"> <property name="key" value="anonymous"/> <property name="userAttribute" value="anonymous,ROLE_ANONYMOUS"/> </bean>
- 这两个Property, 都是在生成AnonymousAuthenticationToken时用到. userAttribute中的anonymous对应着Authentication(AnonymousAuthenticationToken也是 一种Authentication,虽说有些虚)的principal, ROLE_ANONYMOUS对应着Authentication中的GrantedAuthority[], key的anonymous生成AnonymousAuthenticationToken中的keyHash(通过String类的hashCode方 法获得).
- <property name="key" value="anonymous"/>与下面配置的anonymousAuthenticationProvider中的相应行对应.
2.2 配置anonymousAuthenticationProvider
<bean id="anonymousAuthenticationProvider" class="org.acegisecurity.providers.anonymous.AnonymousAuthenticationProvider"> <property name="key" value="anonymous"/> </bean>
- 配 置好后, 把这个anonymousAuthenticationProvider配置到ProviderManager类下providers, 这样filterInvocationInterceptor碰到前面配置的匿名Authentication时, 才能在AccessDecisionVoter"投票"时, 由AnonymousAuthentication的自己人anonymousAuthenticationProvider"保护"着"逃过 "check.
- 一个猜想: 这里的key跟上面anonymousProcessingFilter的key得一致,
不然在"投票"时, 没这个"暗号""自己人"也互相不认识了.想验证这个猜想, 看了下文档,发现这样的话: "The key is shared
between the filter and authentication provider, so that tokens created
by the former are accepted by the latter".自己的猜想不错!
有了上面的配置分析, 运行机理稍看下源码就可以明白了, 这里也就不用再另写了.
-----------------------------------------
看文档时发现这么段话, 觉得很有必要记下来,虽说现在还没有切身体验:Rounding
out the anonymous authentication discussion is the
AuthenticationTrustResolver interface, with its corresponding
AuthenticationTrustResolverImpl implementation. This interface provides
an isAnonymous(Authentication) method, which allows interested classes
to take into account this special type of authentication status. The
ExceptionTranslationFilter uses this interface in processing
AccessDeniedExceptions. If an AccessDeniedException is thrown, and the
authentication is of an anonymous type, instead of throwing a 403
(forbidden) response, the filter will instead commence the
AuthenticationEntryPoint so the principal can authenticate properly.
This is a necessary distinction, otherwise principals would always be
deemed "authenticated" and never be given an opportunity to login via
form, basic, digest or some other normal authentication mechanism.
发表评论
-
Spring下配置job
2010-07-20 15:58 3352没什么可说的, 今天把以前配置的一个job重新整理了下,用ma ... -
研究下Spring中AOP的实现?
2010-06-03 17:57 1270碰到一个AOP的问题, 见“用Spring的 ... -
Debug地研究Hibernate分页功能过程中的另外收获
2009-12-17 15:04 12801, 如用MySQL,其分页sql是啥样的: selec ... -
CJC(二): abstract、子类与多态的单例模式
2009-03-16 10:33 2193CJC是Common Java Cookbo ... -
CJC(一): ToStringBuilder两种方法用法优缺点及一个问题
2009-03-15 20:37 3956CJC是Common Java Cookbook的缩 ... -
研究源码的新天地: 避害趋利
2009-03-14 14:48 1581前两篇分别描述了"为什么要研究源码" ... -
Acegi(十三): 让系统记住我
2009-03-13 09:59 2427经过一段时间的总结, 对Acegi的初步研究终于到 ... -
研究源码的新天地: 研究源码的痛苦
2009-03-12 15:50 1714上篇 中,写了出于什 ... -
研究源码的新天地: 为什么研究源码?
2009-03-11 21:03 1863把前些列出的一个 ... -
Acegi(十一): 借鉴Acegi的Exception的异常处理
2009-03-05 11:16 1434今天改项目中的一个问题时, 不由自住地想到了Acegi异 ... -
Acegi(十): securityContextHolderAwareRequestFilter结
2009-03-04 21:46 1775在Acegi(八) 和Acegi ... -
Acegi(九): 子类SavedRequestAwareWrapper
2009-03-02 22:27 2169上篇 中我们对 securi ... -
Acegi(八): securityContextHolderAwareRequestFilter
2009-03-01 22:03 2347上篇 中我们说了下 LogoutFilter的配置, 这篇 ... -
Acegi(七): LogoutFilter配置及几个问题
2009-02-28 18:49 2777这些天有点懒散, 想 ... -
Acegi源码研究(六): Acegi编码/设计碎得
2009-02-18 22:28 1569前些天通过一个Acegi的Web实例,我们感受了下 ... -
Acegi源码研究(五):七剑下天山
2009-02-17 23:10 1966在Acegi初体验及初解剖(http://rmn19 ... -
CoreJava: 第一次用LinkedHashSet带来的思考(二)
2009-02-15 21:05 1503在第一次用LinkedHa ... -
CoreJava: 第一次用LinkedHashSet带来的思考(一)
2009-02-14 19:34 8249用Java虽说时间不 ... -
Acegi(四):Acegi初体验及初解剖
2009-02-14 12:03 3229上篇博客中,我们以静态地角度对Acegi的核心概念及其 ... -
Acegi(三): Acegi? Who are you?
2009-02-13 08:38 2390Acegi是个什么? ...
相关推荐
实战Acegi:使用Acegi作为基于Spring框架的WEB应
JAVA开发专家:敏捷Acegi、CAS:构建安全的Java系统 pdf
实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架.rar
实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架.pdf
Acegi是一个专门为SpringFramework应用提供安全机制的开放源代码项目,全称为Acegi Security System for Spring,当前版本为 0.8.3。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和...
acegi,acegi,acegi
acegi与cas集成 <!-- ========= Acegi as a CAS Client的配置============= --> class="org.acegisecurity.ui.cas.CasProcessingFilter"> ref="authenticationManager" /> value="/login.do?...
被解剖的acegi配置文件. 博文链接:https://rmn190.iteye.com/blog/175041
Acegi安全系统,是一个用于Spring Framework的安全框架,能够和目前流行的Web容器无缝集成。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全...
Acegi能做什么 Acegi的体系结构 Acegi核心组件 典型的web认证过程 Acegi的登陆认证 Acegi对安全对象的访问控制 Filter 组件 Acegi的不足之处
Acegi文档 spring acegi 详细文档
包含acegi-security-1.0.7.jar,acegi-security-1.0.7-sources.jar,acegi-security-cas-1.0.7.jar,acegi-security-cas-1.0.7-sources.jar,acegi-security-catalina-1.0.7.jar,acegi-security-catalina-1.0.7-...
1、一个Acegi的例子,可以运行 2、一个很好的学Acegi的网址,0基础学习Acegi,强烈推荐 3、有什么问题可以发邮件heroshen@126.com讨论
acegi-security 1.0.2.jar
不错的ACEGI 教程
acegi 框架 介绍 spring 安全
关于Acegi的安全框架,里面有Acegi的实例,讲述得挺清楚的,
Acegi安全系统,是一个用于Spring Framework的安全框架,能够和目前流行的Web容器无缝集成。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全...
acegi,spring的安全验证框架