预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共40页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

编号:时间:2021年x月x日书山有路勤为径学海无涯苦作舟页码:ACEGI安全框架应用指南级别:中级何平系统架构师独立顾问培训讲师。2005年12月26日文章来源于一次acegi的项目应用。因为业务需要与acegi框架缺省的应用方式有一定的区别故在实际应用过程中尝试了对acegi的一定量的改造工作从而具有一定的研究和学习价值。文章中关于Acegi的介绍收入了其他文章中的内容已在参教资料中列出资料来源。内容大纲:认识Acegi安全框架安装并运行Acegi自带的范例改造Acegi框架满足我们的业务要求具体内容:认识Acegi安全框架Acegi安全系统是一个用于SpringFramework的安全框架能够和目前流行的Web容器无缝集成。它使用了Spring的方式提供了安全和认证安全服务包括使用BeanContext拦截器和面向接口的编程方式。因此Acegi安全系统能够轻松地适用于复杂的安全需求。安全涉及到两个不同的概念认证和授权。前者是关于确认用户是否确实是他们所宣称的身份。授权则是关于确认用户是否有允许执行一个特定的操作。在Acegi安全系统中需要被认证的用户系统或代理称为"Principal"。Acegi安全系统和其他的安全系统不同它并没有角色和用户组的概念关键组件Acegi安全系统包含以下七个关键的功能组件:lAuthentication对象包含了PrincipalCredential和Principal的授权信息。同时还可以包含关于发起认证请求的客户的其他信息如IP地址。2ContextHolder对象使用ThreadLocal储存Authentication对象的地方。3AuthenticationManager用于认证ContextHolder中的Authentication对象。4AccessDecissionManager用于授权一个特定的操作。5RunAsManager当执行特定的操作时用于选择性地替换Authentication对象。6SecureObject拦截器用于协调AuthenticationManagerAccessDecissionManagerRunAsManager和特定操作的执行。7ObjectDefinitionSource包含了特定操作的授权定义。这七个关键的功能组件的关系如下图所示(图中灰色部分是关键组件):安全管理对象Acegi安全系统目前支持两类安全管理对象。第一类的安全管理对象管理AOPAlliance的MethodInvocation开发人员可以用它来保护Spring容器中的业务对象。为了使Spring管理的Bean可以作为MethodInvocation来使用Bean可以通过ProxyFactoryBean和BeanNameAutoProxyCreator来管理就像在Spring的事务管理一样使用。第二类是FilterInvocation。它用过滤器(Filter)来创建并简单地包装了HTTP的ServletRequestServletResponse和FilterChain。FilterInvocation可以用来保护HTTP资源。通常开发人员并不需要了解它的工作机制因为他们只需要将Filter加入web.xmlAcegi安全系统就可以工作了。安全配置参数每个安全管理对象都可以描述数量不限的各种安全认证请求。例如MethodInvocation对象可以描述带有任意参数的任意方法的调用而FilterInvocation可以描述任意的HTTPURL。Acegi安全系统需要记录应用于每个认证请求的安全配置参数。例如对于BankManager.getBalance(intaccountNumber)方法和BankManager.approveLoan(intapplicationNumber)方法它们需要的认证请求的安全配置很不相同。为了保存不同的认证请求的安全配置需要使用配置参数。从实现的视角来看配置参数使用ConfigAttribute接口来表示。Acegi安全系统提供了ConfigAttribute接口的一个实现SecurityConfig它把配置参数保存为一个字符串。ConfigAttributeDefinition类是ConfigAttribute对象的一个简单的容器它保存了和特定请求相关的ConfigAttribute的集合。当安