一、基本原理
Acegi认证授权主要基于两大技术,一是Filter机制,二是AOP的拦截机制。通过FilterSecurityInterceptor很好地实现了对URI的保护,通过MethodSecurityInterceptor实现了对Service的方法的拦截保护,通过ACL 实现了对prototype类型的Object进行过滤和保护。
二、基本概念
HttpSessionContextIntegrationFilter 存储SecurityContext in HttpSession
ChannelProcessingFilter 重定向到另一种协议,如http到https
ConcurrentSessionFilter 因为不使用任何SecurityContextHolder的功能,但是需要更新SessionRegistry来表示当前的发送请求的principal,通过在web.xml中注册Listener监听Session事件,并发布相关消息,然后由SessionRegistry获得消息以判断当前用户的Session数量。
AuthenticationProcessingFilter 普通认证机制(大多数用这个)
CasProcessingFilter CAS认证机制
BasicProcessingFilter Http协议的Basic认证机制
HttpRequestIntegrationFilter Authentication 从容器的HttpServletRequest.getUserPrincipal()获得
JbossIntegrationFilter 与Jboss相关。
SecurityContextHolderAwareRequestFilter 与servlet容器结合使用。
RememberMeProcessingFilter 基于Cookies方式进行认证。
AnonymousProcessingFilter 匿名认证。
ExceptionTranslationFilter 捕获所有的Acegi Security 异常,这样要么返回一个HTTP错误响应或者加载一个对应的AuthenticationEntryPoint
AuthenticationEntryPoint 认证入口
三、Acegi认证授权流程
1、FilterToBeanProxy 负责代理请求给FilterChainProxy
2、FilterChainProxy 方便的将多个Filter串联起来,如上面基本概念中提到的各种Filter,当然如果对URI进行授权保护,也可以包含FilterSecurityInterceptor。注意各Filter的顺序。
3、AbstractSecurityInterceptor 调度中心。负责调用各模块完成相应功能。
FilterSecurityInterceptor 对URI进行拦截保护
AspectJSecurityInterceptor 对方法进行拦截保护
MethodSecurityInterceptor 对方法进行拦截保护
4、AuthenticationManager 用户认证
-> AuthenticationProvider 实际进行用户认证的地方(多个)。
-> UserDetailsService 返回带有GrantedAuthority的UserDetail或者抛出异常。
5、AccessDecisionManager(UnanimousBased/AffirmativeBased/ConsensusBased) 授权
-> AccessDecisionVoter(RoleVoter/BaseAclEntryVoter) 实际投票的Voter(多个).
6、RunAsManager 变更GrantedAuthority
7、AfterInvocationManager 变更返回的对象
-> BaseInvocationProvider 实际完成返回对象变更的地方(多个)。
四、Acegi实例
http://www.iteye.com/topic/43341
分享到:
相关推荐
"学习Acegi-认证(authentication) - Acegi 专栏 - JavaEye知识库.mht"和"Acegi学习小结 - Acegi 专栏 - JavaEye知识库.mht"可能提供了更深入的认证学习材料和作者的学习心得,包括可能遇到的问题和解决方案,这对于...
总结一下,Acegi作为一个强大的安全框架,对于理解和实践Java企业级应用的安全控制至关重要。通过学习和实践提供的示例代码以及参考学习网址,你可以深入了解Acegi的功能,并将其应用到自己的项目中,确保应用的安全...
`Acegi学习小结-Spring-Java -JavaEye做最棒的软件开发交流社区.mht`可能是一个社区成员的学习笔记,汇总了他在使用Acegi过程中遇到的问题和解决办法,这类资料往往能提供实战中的宝贵经验。 `学习Acegi-认证...
总结来说,Acegi学习是一个全面研究Java应用程序安全性的过程,涉及核心概念、配置、实践案例和定制化。通过深入学习Acegi,开发者可以构建出更安全、更健壮的Spring应用,有效地管理用户权限,防止未经授权的访问,...
总结来说,Acegi是一个强大且灵活的安全框架,它通过细致的认证、授权机制和会话管理功能,为企业级应用提供了全面的安全保障。学习Acegi不仅能够提升你的Java安全开发能力,也有助于理解Spring Security的底层原理...
总结来说,Acegi权限控制提供了丰富的功能,包括事件监听机制来处理用户登录等关键操作,以及通过`httpSessionContextIntegrationFilter`保持用户会话的安全上下文。这些机制帮助开发者构建出安全且用户体验良好的...
在阅读《Spring ACEGI手册(部分)》.doc文档时,可以深入学习如何配置和使用该框架,以及如何解决常见的安全问题。 **总结** Spring ACEGI作为一个强大的安全框架,为开发者提供了丰富的工具和机制来保护应用程序...
### Acegi认证服务详解 #### 一、Acegi简介与背景 Acegi是Spring Security的前身,是一款基于Spring框架的安全管理工具,旨在为应用程序提供安全控制...希望本文能够为正在学习或使用Acegi的同学提供有价值的参考。
总结,通过`applicationContext-acegi-security.xml`我们可以了解到Acegi Security如何在SpringSide项目中实现安全控制。虽然Acegi已不再更新,但其设计理念和实现方式对理解现代安全框架如Spring Security仍有很大...
### Acegi安全框架入门知识点详解 #### 一、Acegi安全框架概述 Acegi安全框架是一种广泛应用于...未来还可以进一步深入学习Acegi提供的高级特性,如自定义认证处理、基于角色的访问控制等,以满足更加复杂的业务需求。
通过学习 Acegi 的核心组件及其工作原理,开发人员可以更好地理解如何使用 Acegi 来保护他们的应用系统,确保数据的安全性和完整性。无论是保护 Web 资源还是实现方法级别的安全性控制,Acegi 都能提供全面而灵活的...
Spring Acegi是Spring Security的前身,它为Java企业级应用提供了强大的访问控制和安全框架。在深入了解Spring Acegi之前...学习Spring Acegi可以帮助我们更好地理解和应用Spring Security,从而提升Java应用的安全性。
总结,Spring Acegi 是一个强大的安全框架,为 Spring 应用提供了全面的安全管理。虽然已经被 Spring Security 取代,但理解其原理对于深入学习 Spring Security 或其他安全框架仍具有重要的参考价值。在实际开发中...
随着Spring的发展,Acegi Security已经被Spring Security所取代,但理解Acegi在Spring中的运用对于学习Spring Security仍然有所帮助。 首先,让我们从"acegi.mysql.sql"开始。这个文件很可能是数据库脚本,用于创建...
总结来说,"acegi入门demo"是一个展示如何在Spring应用中使用Acegi Security进行用户认证和授权的实例。它涉及到的关键概念包括`AuthenticationManager`、`AccessDecisionManager`、`FilterSecurityInterceptor`以及...
**ACEGI 安全框架详解** ACEGI Security(Acceleo ...虽然现在Spring Security已经取代了ACEGI,但其设计理念和许多核心概念在Spring Security中得到了延续,理解ACEGI对于学习现代Java安全框架仍然有重要价值。
总结来说,Acegi安全框架是Spring生态中的一个重要组件,它使得Java应用程序的安全管理变得简单而灵活。了解和掌握Acegi的工作原理和配置方式,对于开发安全的Web应用至关重要。同时,随着技术的演进,学习最新的...
### 挑战Acegi1.0:小试牛刀,...总之,虽然Acegi1.0现在已经不再更新,但它的一些设计理念和实践仍然值得学习和借鉴。对于想要深入了解Spring Security及其前身的开发者来说,掌握Acegi1.0的基础配置是非常有帮助的。
在本文中,我们将探讨如何整合Spring、Hibernate和Acegi框架,构建一个安全的J2EE应用程序。...在深入学习和实践中,你会逐渐掌握Acegi的更多高级功能,比如基于表达式的访问控制、会话管理以及密码加密等。
- **学习曲线**:虽然Acegi Security提供了强大的功能,但其配置相对复杂,需要花费时间去理解和学习。 - **文档和社区**:由于Acegi Security已经不再维护,开发者可能需要查阅旧的文档和社区资源来解决问题。 ...