欢迎来到天天文库
浏览记录
ID:34258975
大小:49.87 KB
页数:44页
时间:2019-03-04
《[教学]springsecurity安全框架应用指南》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、ACEGI安全框架应用指南级別:中级何平系统架构师,独立顾问,培训讲师。2005年12刀26n文章来源于--次acegi的项目应用。因为业务需婆与acegi框架缺省的应用方式有一定的区别,故在实际应川过程中尝试了对acegi的一定量的改造工作,从而具有一定的研究和学习价值。文章中关于Acegi的介绍收入了其他文章屮的内容,己在参教资料中列出资料來源。内容大纲:>认识Acegi安全框架>安装并运行Acegi口带的范例>改造Acegi框架满足我们的业务耍求具体内容:■认识Acegi安全框架Acegi安全系统,是一个用于SpringFramework的安全框架,能够和目前流行的Web容器无缝集成。它
2、使用了Spring的方式捉供了安全和认证安全服务,包括使用BeanContext,拦截器和面向接口的编程方式。因此,Acegi安全系统能够轻松地适用于复杂的安全需求。安全涉及到两个不同的概念,认证和授权。前者是关于确认用户是否确实是他们所宣称的身份。授权则是关于确认用户是否有允许执行一个特定的操作。在Acegi安全系统中,需要被认证的用户,系统或代理称为”Principal”。Acegi安全系统和其他的安全系统不同,它并没有角色和用户组的概念◊关键组件Acegi安全系统包含以下七个关键的功能组件:1Authentication对象,包含了Principal,Credential和Princip
3、al的授权信息。同时还可以包含关于发起认证请求的客户的其他信息,如IP地址。1ContextHolder对象,使用ThreadLocal储存Authentication对象的地方。2AuthenticationManager,用于认证ContextHolder中的Authentication对象。3AccessDecissionManager,用于授权一个特定的操作。4RunAsManager,当执行特定的操作时,用丁选择性地替换Authentication对彖。5SecureObject拦截器,用于协调AuthenticationManager,AccessDecissionManager,
4、RunAsManager和特定操作的执行。6ObjectDefinitionSource,包含了特定操作的授权定义。这七个关键的功能组件的关系如下图所示(图屮灰色部分是关键组件):◊安全管理对象Acegi安全系统口前支持两类安全管理对象。第一类的安全管理对象管理AOPAlliance的Methodlnvocation,开发人员口J以用它來保护Spring容器中的业务对象。为了使Spring管理的Bean可以作为Methodinvocation来使用,Bean可以通过ProxyFactoryBean和BeanNameAutoProxyCreator来管理,就像在Spring的事务管理一样使用。第
5、二类是Filterinvocation□它用过滤器(Filter)來创建,并简单地包装了HTTP的ServletRequest,ServletResponse和FilterChainoHiterlnvocation可以用来保护HTTP资源。通常,开发人员并不需要了解它的工作机制,因为他们只需要将Filter加入web.xml,Acegi安全系统就可以工作了。◊安全配置参数每个安全管理对象都可以描述数量不限的各种安全认证请求。例如,Methodinvocation对象可以描述带有任意参数的任意方法的调用,而Filterinvocation可以描述任意的HTTPURL。Acegi安全系统需要记录应
6、用于每个认证请求的安全配置参数。例如,对于BankManager.getBalance(intaccountNumber)方法和BankManager.approveLoan(intapplicationNumber)方法,它们需要的认证请求的安全配置很不相同。为了保存不同的认证请求的安全配置,需要使用配置参数。从实现的视角来看,配置参数使用ConfigAttribute接口來表示。Acegi安全系统提供了ConfigAttribute接口的一个实现,SecurityConfig,它把配置参数保存为一个字符串。ConfigAttributeDefinition类是ConfigAttribute
7、对象的一个简单的容器,它保存了和特定请求相关的ConfigAttribute的集合。当安全拦截器收到一个安全认证请求时,需要决定应用哪一个配置参数。换句话说,它需耍找出应用于这个请求的ConfigAttributeDefinition对彖。这个查找的过程是由ObjectDefinitionSource接口来处理的。这个接口的主要方法是publicConfigAttributeDefinitiong
此文档下载收益归作者所有