Acegi安全框架的机制和使用经验介绍
2012-02-02 13:21
405 查看
Acegi安全系统,是一个用于Spring Framework的安全框架,能够和目前流行的Web容器无缝集成。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全系统能够轻松地适用于复杂的安全需求。安全涉及到两个不同的概念,认证和授权。认证是关于确认用户是否确实是他们所宣称的身份。授权则是关于确认用户是否有允许执行一个特定的操作。
我们先看一下Acegi实现,Acegi配置文件片段如下:
我们看到,它是由一些过滤器组成的,主要包含过滤器是session上下文集成(HttpSessionContextIntegrationFilter)、认证处理(authenticationProcessingFilter)、安全上下文控制(SecurityContextHolderAwareRequestFilter)、登录退出(logoutFilter)、记住我处理(rememberMeProcessingFilter)、匿名处理(anonymousProcessingFilter)、过滤拦截(filterInvocationInterceptor)。其中权限处理主要是通过这些过滤器来实现的,其中过滤拦截(filterInvocationInterceptor)中需要判断角色、资源,有不同的投票策略决定是否对请求资源限制访问。实现可以组件方式注入,可扩展,但是比较重量级。
上述是Acegi的过滤器处理的一个spring配置,真正在web容器中起作用,还要在web.xml中配置,如下:
注:我们看到上述配置,是通过委托代理方式配置的,并配置在web上下文的路径映射。这样通过targetClass与Acegi的配置filterChainProxy实例关联起来,就可以在web容器中进行拦截过滤处理相应资源。
总体来说,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> ... |
上述是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> |
总体来说,Acegi实现还是功能集成度高、复杂、重量级的。笔者建议还是把它拆分成不同的功能部分,根据需要分别来用不同组件实现比较好。
相关文章推荐
- 实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架
- acegi安全框架使用:第二部分
- Spring框架和Acegi安全框架介绍
- Redis简介、与memcached比较、存储方式、应用场景、生产经验教训、安全设置、key的建议、安装和常用数据类型介绍、ServiceStack.Redis使用(1)
- 【SSI开发总结.4】Spring中使用Acegi安全框架
- 使用Acegi作为基于Spring框架的WEB应用的安全框架
- 基于Metronic的Bootstrap开发框架经验总结(3)--下拉列表Select2插件的使用
- SEAndroid安全机制框架分析
- 使用反射机制调用属性和私有成员与代理模式的介绍
- client高性能组件化框架React简单介绍、特点、环境搭建及经常使用语法
- SEAndroid安全机制简要介绍和学习计划
- goolge官方推荐图片加载框架glide使用介绍
- Android绘图机制(四)——使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美
- java jodd框架介绍及使用示例
- MySQL Proxy - MySQL代理的介绍及个人使用经验[转]
- Layui前端框架导航栏使用介绍
- dubbo学习过程、使用经验分享及实现原理简单介绍
- Hadoop安全机制介绍 MR V1
- iOS底层绘图机制,CoreGraphics框架,和Context使用详解
- (转)基于MVC4+EasyUI的Web开发框架经验总结(3)- 使用Json实体类构建菜单数据