| « | may 2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
| 本博客在此声明所有文章均为转摘,只做资料收集使用。并无其他商业用途。 |
| Blog信息 |
|
blog名称: 日志总数:210 评论数量:205 留言数量:-19 访问次数:946509 建立时间:2007年5月10日 |

| |
|
[acegi权限认证]Acegi学习小结 文章收藏, 网上资源, 软件技术, 电脑与网络
李小白 发表于 2007/7/3 10:07:38 |
|
jamesby 发表于 2007-01-17 15:34 浏览4853次关键字: Spring acegi加入在 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.javaeye.com/topic/43341声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者。 |
|
|