目录
ACEGI SECURITY FOR SPRINGFRAMEWORK..........................................................................................1
目录
............................................................................................................................................. ......2
Acegi
简介
................................................................................................................................ .........2
Acegi
系统设计
........................................................................................................................ .........3
关键组件..................................................................................................................................................... 3
安全管理对象............................................................................................................................................. 4
安全配置参数............................................................................................................................................. 5
Resuest Contexts.........................................................................................................................................5
Contexts.................................................................................................................................................. 5
Secure Contexts......................................................................................................................................6
Custom Contexts.....................................................................................................................................6
Context Storage.......................................................................................................................................7
Acegi 如何工作...........................................................................................................................................7
认证授权流程........................................................................................................................................9
授权机制..............................................................................................................................................12
Acegi 简介
Acegi 安全系统,是一个用于 Spring Framework 的安全框架,能够和目前流行
的 Web 容器无缝集成。它使用了 Spring 的方式提供了安全和认证安全服务,包括使用
Bean Context,拦截器和面向接口的编程方式。因此,Acegi 安全系统能够轻松地适用
于复杂的安全需求。
''''安全涉及到两个不同的概念,认证和授权。前者是关于确认用户是否确实是他们所宣
称的身份。授权则是关于确认用户是否有允许执行一个特定的操作。
''''在 Acegi 安全系统中,需要被认证的用户,系统或代理称为"Principal"。Acegi
安全系统和其他的安全系统不同,它并没有角色和用户组的概念。
优 点 :
完全符合 J2EE 规范
采用 AOP 实现, 与业务解耦
具有很强的灵活性, 可与其他认证方式整合, 如容器认证, CAS SSO , X509
强大的 ACL 权限控制可以实现 Service 和 Domain Object 的权限控制
可用于已经存在的权限系统中, 不对表结构做强制限定, 权限表只要满足基本要求即
可
缺 点:
由于 Acegi 是建立在 Spring 基础上的, 所以系统必须支持 Spring
Acegi 系统设计
关键组件
Acegi 安全系统包含以下八个关键的功能组件:
Authentication 对象,包含了 Principal,Credential 和 Principal 的授权
信息。同时还可以包含关于发起认证请求的客户的其他信息,如 IP 地址。
ContextHolder 对象,使用 ThreadLocal 储存 Authentication 对象的地方。
AuthenticationManager,用于认证 ContextHolder 中的 Authentication
对象。
AccessDecissionManager,用于授权一个特定的操作。
RunAsManager,当执行特定的操作时,用于选择性地替换 Authentication 对象。
Secure Object 拦截器,用于协调 AuthenticationManager,
AccessDecissionManager, RunAsManager 和特定操作的执行。
AfterInvocationManager, 用于在 一个 SesureObject 运行结束后修改一个
对象, 比如从 Principal 的 authorities 集合中移除一些没有访问授权的元
素.
ACL 管理 package, 用于为 domain object 实例获取可用的 ACLs.
“Security Object” 拦截器执行 Aceig Security 的绝大多数关键类, 它表现了
此架构的主要特征. 为了显示它的重要性, 插图 1 展示了各关键类之间的关系以及具体
实现类 AbstractSecurityInterceptor.
插图 1:The key "secure object" model
安全管理对象
Acegi 安全系统目前支持三类安全管理对象。
第一类的安全管理对象管理 AOP Alliance 的 MethodInvocation,开发人
员可以用它来保护 Spring 容器中的业务对象。为了使 Spring 管理的 Bean 可以作为
MethodInvocation 来使用,Bean 可以通过 ProxyFactoryBean 和
BeanNameAutoProxyCreator 来管理,就像在 Spring 的事务管理一样使用。
第二类是 AspectJ JoinPoint. AspectJ 被特殊的用于 domain object
实例的安全管理, 一般处于 Spring bean 容器管理之外. 使用 AspectJ, 一个标准
构造函数比如 new Person(), 可以通过 Acegi Security 增加安全控制功能.
AspectJSecurityInterceptor 是被 Spring 容器管理的, Spring 容器负责创建
aspect singleton, 然后将相应的 authentication managers. Access
decision mangers 等注入给它.
第三类是 FilterInvocation。它用过滤器(Filter)来创建,并简单地包
装了 HTTP 的 ServletRequest,ServletResponse 和
FilterChain。FilterInvocation 可以用来保护 HTTP 资源。通常,开发人员并不需