浏览 21480 次
已锁定 主题:Acegi学习小结
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-17
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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-01-17
这个还没有用过,学习了,能给个简单的例子就更好了,(^__^)|||
|
|
返回顶楼 | |
发表时间:2007-01-17
anders0913 写道 这个还没有用过,学习了,能给个简单的例子就更好了,(^__^)|||
按照acegi官方推荐的路线,看官方提供的例子,就很棒了。 tutorial -> petclinic -> contacts |
|
返回顶楼 | |
发表时间:2007-01-17
acegi的思想非常不错!
不过用到现实的项目中,发现改了不少,基本是一半! |
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间:2007-01-29
讲的真好, 问一个小问题 :
引用 由SessionRegistry获得消息以判断当前用户的Session数量
当前用户的Session数量 是什么意思?是指 一个用户可以有多个session么? 还是指一个用户一个session但是session中有多个属性。 亦或者 : 整个网站 有多少个session(一个session对应一个访问者) |
|
返回顶楼 | |
发表时间:2007-01-29
它的意思就是防止同一个用户多次登录,如账号jamesby在javaeye论坛只能保存一个session,这意味着我在公司上javaeye网站,但是我没有退出javaeye,则我在家无法登录javaeye,我对acegi也不熟悉,其实只是入门,但是觉得ConcurrentSessionFilter应该是这个意思。
|
|
返回顶楼 | |
发表时间:2007-01-29
请教SecurityContextHolder.getContext();取值为空的问题 ;可能会是什么地方出了错?
帮忙看一下: http://www.iteye.com/topic/48329 |
|
返回顶楼 | |
发表时间:2007-03-21
三、Acegi认证授权流程 3、AbstractSecurityInterceptor 调度中心。负责调用各模块完成相应功能。 FilterSecurityInterceptor 对URI进行拦截保护 AspectJSecurityInterceptor 对方法进行拦截保护 MethodSecurityInterceptor 对方法进行拦截保护 我刚好要做这方面的事情,可没看明白拦截器是被哪个组件调用的,能说说methedSecurityInterceptor是如何被调用的吗? |
|
返回顶楼 | |
发表时间:2007-03-21
methedSecurityInterceptor这个与事务拦截器差不多,就是基于Spring的AOP!
|
|
返回顶楼 | |