`
jamesby
  • 浏览: 383493 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Acegi学习小结

阅读更多
一、基本原理
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
分享到:
评论
11 楼 Y04069 2007-03-26  
learning~~
10 楼 mazzystar 2007-03-25  
哦谢谢 再试试
9 楼 jamesby 2007-03-21  
methedSecurityInterceptor这个与事务拦截器差不多,就是基于Spring的AOP!
8 楼 mazzystar 2007-03-21  

三、Acegi认证授权流程

3、AbstractSecurityInterceptor 调度中心。负责调用各模块完成相应功能。
          FilterSecurityInterceptor 对URI进行拦截保护
AspectJSecurityInterceptor 对方法进行拦截保护
MethodSecurityInterceptor 对方法进行拦截保护

我刚好要做这方面的事情,可没看明白拦截器是被哪个组件调用的,能说说methedSecurityInterceptor是如何被调用的吗?



7 楼 firedragon 2007-01-29  
请教SecurityContextHolder.getContext();取值为空的问题 ;可能会是什么地方出了错?

帮忙看一下:
http://www.iteye.com/topic/48329
6 楼 jamesby 2007-01-29  
它的意思就是防止同一个用户多次登录,如账号jamesby在javaeye论坛只能保存一个session,这意味着我在公司上javaeye网站,但是我没有退出javaeye,则我在家无法登录javaeye,我对acegi也不熟悉,其实只是入门,但是觉得ConcurrentSessionFilter应该是这个意思。
5 楼 JavaFlasher 2007-01-29  
讲的真好, 问一个小问题 :

引用
由SessionRegistry获得消息以判断当前用户的Session数量


当前用户的Session数量 是什么意思?是指 一个用户可以有多个session么? 还是指一个用户一个session但是session中有多个属性。 亦或者 : 整个网站 有多少个session(一个session对应一个访问者)


4 楼 xprogrammer 2007-01-25  
jamesby 写道
一、基本原理
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
3 楼 magice 2007-01-17  
acegi的思想非常不错!
不过用到现实的项目中,发现改了不少,基本是一半!
2 楼 pupi 2007-01-17  
anders0913 写道
这个还没有用过,学习了,能给个简单的例子就更好了,(^__^)|||


按照acegi官方推荐的路线,看官方提供的例子,就很棒了。
tutorial -> petclinic -> contacts
1 楼 anders0913 2007-01-17  
这个还没有用过,学习了,能给个简单的例子就更好了,(^__^)|||

相关推荐

    acegi学习整理合集

    "学习Acegi-认证(authentication) - Acegi 专栏 - JavaEye知识库.mht"和"Acegi学习小结 - Acegi 专栏 - JavaEye知识库.mht"可能提供了更深入的认证学习材料和作者的学习心得,包括可能遇到的问题和解决方案,这对于...

    Acegi例子代码+一个很好的学习Acegi的网址

    总结一下,Acegi作为一个强大的安全框架,对于理解和实践Java企业级应用的安全控制至关重要。通过学习和实践提供的示例代码以及参考学习网址,你可以深入了解Acegi的功能,并将其应用到自己的项目中,确保应用的安全...

    acegi资料大全-全集

    `Acegi学习小结-Spring-Java -JavaEye做最棒的软件开发交流社区.mht`可能是一个社区成员的学习笔记,汇总了他在使用Acegi过程中遇到的问题和解决办法,这类资料往往能提供实战中的宝贵经验。 `学习Acegi-认证...

    acegi学习

    总结来说,Acegi学习是一个全面研究Java应用程序安全性的过程,涉及核心概念、配置、实践案例和定制化。通过深入学习Acegi,开发者可以构建出更安全、更健壮的Spring应用,有效地管理用户权限,防止未经授权的访问,...

    acegi学习指南以及例子

    总结来说,Acegi是一个强大且灵活的安全框架,它通过细致的认证、授权机制和会话管理功能,为企业级应用提供了全面的安全保障。学习Acegi不仅能够提升你的Java安全开发能力,也有助于理解Spring Security的底层原理...

    acegi权限控制学习笔记

    总结来说,Acegi权限控制提供了丰富的功能,包括事件监听机制来处理用户登录等关键操作,以及通过`httpSessionContextIntegrationFilter`保持用户会话的安全上下文。这些机制帮助开发者构建出安全且用户体验良好的...

    Spring ACEGI手册(部份)

    在阅读《Spring ACEGI手册(部分)》.doc文档时,可以深入学习如何配置和使用该框架,以及如何解决常见的安全问题。 **总结** Spring ACEGI作为一个强大的安全框架,为开发者提供了丰富的工具和机制来保护应用程序...

    学习Acegi-认证 文档

    ### Acegi认证服务详解 #### 一、Acegi简介与背景 Acegi是Spring Security的前身,是一款基于Spring框架的安全管理工具,旨在为应用程序提供安全控制...希望本文能够为正在学习或使用Acegi的同学提供有价值的参考。

    springside 玩转acegi

    总结,通过`applicationContext-acegi-security.xml`我们可以了解到Acegi Security如何在SpringSide项目中实现安全控制。虽然Acegi已不再更新,但其设计理念和实现方式对理解现代安全框架如Spring Security仍有很大...

    spring+acegi+中文手册

    通过学习 Acegi 的核心组件及其工作原理,开发人员可以更好地理解如何使用 Acegi 来保护他们的应用系统,确保数据的安全性和完整性。无论是保护 Web 资源还是实现方法级别的安全性控制,Acegi 都能提供全面而灵活的...

    spring acegi

    Spring Acegi是Spring Security的前身,它为Java企业级应用提供了强大的访问控制和安全框架。在深入了解Spring Acegi之前...学习Spring Acegi可以帮助我们更好地理解和应用Spring Security,从而提升Java应用的安全性。

    Spring Acegi

    总结,Spring Acegi 是一个强大的安全框架,为 Spring 应用提供了全面的安全管理。虽然已经被 Spring Security 取代,但理解其原理对于深入学习 Spring Security 或其他安全框架仍具有重要的参考价值。在实际开发中...

    acegi spring 例子

    随着Spring的发展,Acegi Security已经被Spring Security所取代,但理解Acegi在Spring中的运用对于学习Spring Security仍然有所帮助。 首先,让我们从"acegi.mysql.sql"开始。这个文件很可能是数据库脚本,用于创建...

    acegi入门demo

    总结来说,"acegi入门demo"是一个展示如何在Spring应用中使用Acegi Security进行用户认证和授权的实例。它涉及到的关键概念包括`AuthenticationManager`、`AccessDecisionManager`、`FilterSecurityInterceptor`以及...

    acige包--acegi-security-1.0.7

    **ACEGI 安全框架详解** ACEGI Security(Acceleo ...虽然现在Spring Security已经取代了ACEGI,但其设计理念和许多核心概念在Spring Security中得到了延续,理解ACEGI对于学习现代Java安全框架仍然有重要价值。

    Acegi保护Java 应用程序

    总结来说,Acegi安全框架是Spring生态中的一个重要组件,它使得Java应用程序的安全管理变得简单而灵活。了解和掌握Acegi的工作原理和配置方式,对于开发安全的Web应用至关重要。同时,随着技术的演进,学习最新的...

    挑战Acegi1.0

    ### 挑战Acegi1.0:小试牛刀,...总之,虽然Acegi1.0现在已经不再更新,但它的一些设计理念和实践仍然值得学习和借鉴。对于想要深入了解Spring Security及其前身的开发者来说,掌握Acegi1.0的基础配置是非常有帮助的。

    Spring+Hibernate+Acegi 的初次体验

    在本文中,我们将探讨如何整合Spring、Hibernate和Acegi框架,构建一个安全的J2EE应用程序。...在深入学习和实践中,你会逐渐掌握Acegi的更多高级功能,比如基于表达式的访问控制、会话管理以及密码加密等。

    acegi-security-0.5.jar.zip

    - **学习曲线**:虽然Acegi Security提供了强大的功能,但其配置相对复杂,需要花费时间去理解和学习。 - **文档和社区**:由于Acegi Security已经不再维护,开发者可能需要查阅旧的文档和社区资源来解决问题。 ...

Global site tag (gtag.js) - Google Analytics