Acegi安全框架的机制和使用经验介绍

       Acegi安全系统,是一个用于Spring Framework的安全框架,能够和目前流行的Web容器无缝集成。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全系统能够轻松地适用于复杂的安全需求。安全涉及到两个不同的概念,认证和授权。认证是关于确认用户是否确实是他们所宣称的身份。授权则是关于确认用户是否有允许执行一个特定的操作。

      我们先看一下Acegi实现,Acegi配置文件片段如下:

<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
  <property name="filterInvocationDefinitionSource">
   <value><![CDATA[
    CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
    PATTERN_TYPE_APACHE_ANT
    /**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,securityContextHolderAwareRequestFilter,rememberMeProcessingFilter,

anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
   ]]></value>
  </property>
 </bean>

...

我们看到,它是由一些过滤器组成的,主要包含过滤器是session上下文集成(HttpSessionContextIntegrationFilter)、认证处理(authenticationProcessingFilter)、安全上下文控制(SecurityContextHolderAwareRequestFilter)、登录退出(logoutFilter)、记住我处理(rememberMeProcessingFilter)、匿名处理(anonymousProcessingFilter)、过滤拦截(filterInvocationInterceptor)。其中权限处理主要是通过这些过滤器来实现的,其中过滤拦截(filterInvocationInterceptor)中需要判断角色、资源,有不同的投票策略决定是否对请求资源限制访问。实现可以组件方式注入,可扩展,但是比较重量级。

上述是Acegi的过滤器处理的一个spring配置,真正在web容器中起作用,还要在web.xml中配置,如下:

...

<filter>                                                                                                                        
  <filter-name>appSecurity</filter-name>
  <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
  <init-param>
   <param-name>targetClass</param-name>
   <param-value>
    org.acegisecurity.util.FilterChainProxy
   </param-value>
  </init-param>
 </filter>

...

<filter-mapping>
  <filter-name>appSecurity</filter-name>
  <url-pattern>*.do</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>appSecurity</filter-name>
  <url-pattern>*.jsp</url-pattern>
 </filter-mapping>

注:我们看到上述配置,是通过委托代理方式配置的,并配置在web上下文的路径映射。这样通过targetClass与Acegi的配置filterChainProxy实例关联起来,就可以在web容器中进行拦截过滤处理相应资源。

       总体来说,Acegi实现还是功能集成度高、复杂、重量级的。笔者建议还是把它拆分成不同的功能部分,根据需要分别来用不同组件实现比较好。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云焰

你的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值