acegi Reference Documentation 0.9.0

1.3 High Level Design 高层设计

1.3.1 关键组件
大多数的企业应用有四个基本的安全需求。首先,他们必须能认证一个principal。第二点,他们必须能保证一个web请求的安全。第三,企业应用必须能保证业务逻辑层的方法安全。
最后,大多数企业应用需要保证域对象实例的安全。Acegi Serurity 提供一个全面的框架以达到所有四个共有的企业应用安全需求。
 
Acegi Security System for Spring 本质上包含8个关键的功能部件:
 
l         Authentication对象保存principal,credentials,以及此principal允许的authorities信息。这个对象也能存储与一个authentication请求相关的额外的信息,例如TCP/IP源地址。
l         ContextHolder将Authentication对象保存在一个ThreadLocal绑定对象。
l         AuthenticationManager认证Authentication对象(通过ContextHolder对象获得)。
l         AccessDecisionManager授权一个操作。
l         RunAsManager可以在一个特定的操作执行的同时随意的替代Authentication对象。
l         安全对象拦截器,协调authentication,authorization,run-as替换,调用后处理以及特定操作的执行。
l         AfterInvocationManager可以修改一个被安全对象调用返回后的对象。例如除去principal没有权限访问的集合。
l         ACL(访问控制列表)管理包,它能用于对域对象实例的ACLs应用。
一个安全对象拦截器执行大多数的Acegi Security关键类,因此阐述了框架的主要功能。出于它的重要性,图一展示了关键的关系以及具体实现类AbstractSecurityInterceptor
 
每个安全对象拦截(以下称安全拦截器)针对特定类型的安全对象工作。那么,安全对象是什么呢?安全对象指任何类型的对象,只要有安全应用于它。一个安全对象必须提供一些形式的反馈,以便安全拦截器可以明确的执行它的工作,并且当需要安全拦截器处理请求操作时返回此对象。如果安全对象不能提供一个本地的反馈方法,需要写一个包装器是这个成为可能。
每个安全对象在net.sf.acegisecurity.intercept下都有自己的包。在这个安全系统中其余的每个包都是独立的安全对象,因此它可以支持任意类型的安全对象。(in that it can support any type of secure object presented.)
开发人员唯一需要做的就是直接使用安全对象。例如,可以新建一个安全对象以便保护调用一个消息系统不要使用MethodInvocations.大多数的spring应用将简单的完全透明地使用现支持的三种安全对象类型(AOP Allicance MethodInvocation,AspectJ JoinPoint 和 web请求FilterInterceptor)。
通过这篇文档将详细地讨论Acegi Security这八个关键的部件。
 
1.3.2 对安全对象的支持
 
如图一所示,Acegi Security System目前支持三种安全对象。
首先运用一个AOP Alliance MethodInvocation。这是一个安全对象类型,用来保护Spring beans。开发人员通常用这个安全对象类型保护他们的业务对象。要使一个标准的基于Spring的bean作为MethodInvocation有效,这个bean可以通过简单的通过在ProxyFactoryBean或者BeanNameAutoProxyCreator或者DefaultAdvisorAutoProxyCreator发布来实现。大多数的Spring开发者应当已经熟悉这些,因为它们在事务和Spring的其它领域。
 
第二种类型是AspectJ JoinPoint. AspectJ有一个特殊的用途,应用于对域对象引用的保护,他们大多数时候是在Spring bean容器之外被管理的。通过使用AspectJ,标准的构造器,例如new Person() ,可以被使用的并且通过Acegi Security将对他们应用完整的安全。AspectJSecurityInterceptor仍然被Spring 管理,它创建了aspect singleton,并且wires it with
the appropriate authentication managers, access decision managers and so on.
 
第三种类型是FilterInvocation。包含在Acegi Security System中的这个对象是为了Spring。通过相关的过滤器,简单的包装HTTP ServletRequest,ServletResponse和FilterChain.FilterInvocation使HTTP资源可以被保护起来。开发人员无需要知道这个机制是如何工作的,因为他们只需要在web.xml文件中添加这些过滤器,让安全系统处理这些工作。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值