- 浏览: 922812 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 3393没什么可说的, 今天把以前配置的一个job重新整理了下,用ma ... -
研究下Spring中AOP的实现?
2010-06-03 17:57 1312碰到一个AOP的问题, 见“用Spring的 ... -
Debug地研究Hibernate分页功能过程中的另外收获
2009-12-17 15:04 13121, 如用MySQL,其分页sql是啥样的: selec ... -
CJC(二): abstract、子类与多态的单例模式
2009-03-16 10:33 2242CJC是Common Java Cookbo ... -
CJC(一): ToStringBuilder两种方法用法优缺点及一个问题
2009-03-15 20:37 4023CJC是Common Java Cookbook的缩 ... -
研究源码的新天地: 避害趋利
2009-03-14 14:48 1631前两篇分别描述了"为什么要研究源码" ... -
Acegi(十三): 让系统记住我
2009-03-13 09:59 2472经过一段时间的总结, 对Acegi的初步研究终于到 ... -
研究源码的新天地: 研究源码的痛苦
2009-03-12 15:50 1752上篇 中,写了出于什 ... -
研究源码的新天地: 为什么研究源码?
2009-03-11 21:03 1895把前些列出的一个 ... -
Acegi(十一): 借鉴Acegi的Exception的异常处理
2009-03-05 11:16 1487今天改项目中的一个问题时, 不由自住地想到了Acegi异 ... -
Acegi(十): securityContextHolderAwareRequestFilter结
2009-03-04 21:46 1835在Acegi(八) 和Acegi ... -
Acegi(九): 子类SavedRequestAwareWrapper
2009-03-02 22:27 2214上篇 中我们对 securi ... -
Acegi(八): securityContextHolderAwareRequestFilter
2009-03-01 22:03 2399上篇 中我们说了下 LogoutFilter的配置, 这篇 ... -
Acegi(七): LogoutFilter配置及几个问题
2009-02-28 18:49 2828这些天有点懒散, 想 ... -
Acegi源码研究(六): Acegi编码/设计碎得
2009-02-18 22:28 1614前些天通过一个Acegi的Web实例,我们感受了下 ... -
Acegi源码研究(五):七剑下天山
2009-02-17 23:10 2003在Acegi初体验及初解剖(http://rmn19 ... -
CoreJava: 第一次用LinkedHashSet带来的思考(二)
2009-02-15 21:05 1538在第一次用LinkedHa ... -
CoreJava: 第一次用LinkedHashSet带来的思考(一)
2009-02-14 19:34 8278用Java虽说时间不 ... -
Acegi(四):Acegi初体验及初解剖
2009-02-14 12:03 3290上篇博客中,我们以静态地角度对Acegi的核心概念及其 ... -
Acegi(三): Acegi? Who are you?
2009-02-13 08:38 2434Acegi是个什么? ...
相关推荐
Acegi是一个专门为SpringFramework应用提供安全机制的开放源代码项目,全称为Acegi Security System for Spring,当前版本为 0.8.3。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和...
JAVA开发专家:敏捷Acegi、CAS:构建安全的Java系统 pdf
尽管如此,了解Acegi Security对于理解Spring Security的原理和机制仍然非常有帮助。 在实际的项目中,我们还需要处理一些其他安全问题,如CSRF(跨站请求伪造)防护、XSS(跨站脚本攻击)防护以及输入验证等。...
《实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架》这本书提供了一个很好的起点,它详细介绍了如何设置和使用Acegi,以及如何解决实际开发中的安全问题。 总的来说,Acegi为基于Spring的Web应用提供...
Acegi是Spring Security的前身,它是一个强大的、可...尽管Acegi已被Spring Security所取代,但其核心理念和使用方法在Spring Security中仍然得到延续,因此学习Acegi对于理解Spring Security的安全机制非常有帮助。
Acegi 是一个在Java开发领域,特别是Spring框架中曾经广泛使用的安全组件,全称为Acegi Security。这个系统为Spring应用程序提供了全面的安全管理解决方案,包括身份验证、授权、会话管理以及安全事件处理等功能。...
尽管Acegi已经被Spring Security所取代,但它的设计理念和核心功能对理解现代Java应用安全依然有价值。 首先,Acegi提供了身份验证和授权服务,确保只有合法用户能够访问应用程序的特定部分。在初体验部分,博主...
在《实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架.pdf》中,可能会详细讲解如何配置和使用Acegi。以下是一些关键步骤: 1. **添加依赖**:首先,在项目中引入Acegi的依赖库,通常是通过Maven或...
Acegi 还提供了许多预定义的安全过滤器,如 UsernamePasswordAuthenticationFilter 和 AnonymousProcessingFilter,它们可以轻松集成到 Filter Chain 中。 总的来说,Acegi 提供了一个强大且灵活的框架,使 Java ...
尽管Acegi Security是Spring早期的安全解决方案,但它提供了一套全面的工具,对于理解Spring Security(Acegi的现代替代品)的工作原理非常有帮助。在实际项目中,现在通常推荐使用Spring Security,因为它拥有更...
2. **授权(Authorization)**:在Acegi中,授权是指确定一个已认证的用户是否有权限访问特定的资源或执行某些操作。它可以基于角色、URL、方法或者更复杂的规则进行控制。 3. **会话管理(Session Management)**...
在实际应用中,我们通常会遵循以下步骤来使用Acegi: 1. **集成Acegi**:将Acegi库添加到项目的类路径中,并在Spring配置文件中声明Acegi的安全配置。 2. **配置安全上下文**:定义安全上下文,指定认证和授权的...
- AceGI:AceGi Security,一个用于Spring Web应用的安全框架。 - CAS:Central Authentication Service,中心认证服务,提供单一登录解决方案。 - SSO:Single Sign-On,单点登录,用户只需登录一次就能访问所有...
acegi与cas集成 <!-- ========= Acegi as a CAS Client的配置============= --> class="org.acegisecurity.ui.cas.CasProcessingFilter"> ref="authenticationManager" /> value="/login.do?...
6. **源码分析**:由于标签中有“源码”一词,博文可能深入讲解了 Acegi 源码的某个部分,帮助读者理解其内部工作原理,或者展示了如何根据需求自定义 Acegi 组件。 7. **工具使用**:标签中的“工具”可能指的是 ...
【Acegi框架介绍 acegi安全与认证】 Acegi Security,现称为Spring Security,是一个强大的安全框架,主要用于基于Spring的企业级应用。它通过Spring的依赖注入(IoC)和面向切面编程(AOP)功能,提供了声明式的...
如果你手头有Acegi的详细文档,如acegi.docx和Acegi.zip中的内容,这将是一个宝贵的资源,帮助你深入理解和解决问题。 总结起来,Spring Acegi是一个强大的安全框架,它的功能包括用户认证、权限控制和安全拦截。...
Acegi Security,现已被Spring ...结合"acegi-sample.war"和"实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架.pdf",开发者可以更好地理解和掌握Acegi Security的使用方法,从而提升Web应用的安全性。
Acegi Security是一个专门为Spring框架设计的权限控制框架,旨在为基于J2EE的企业级应用程序提供全面的安全服务。这个框架解决了J2EE规范中安全性配置不便于移植的问题,使得应用程序的安全设置能够在不同服务器环境...
然而,尽管Acegi非常强大,它也有不足之处,如学习曲线较陡峭,配置复杂,对于初学者来说可能较为困难。此外,随着Spring Security的发展,Acegi的一些功能可能已经被更新的版本替代或优化,因此在使用时需要考虑其...