Acegi
Spring 安全系统:AcegiSecurity
1.Acegi 简介
Acegi 安全系统,是一个用于 SpringFramework 的安全框架,能够和目前流行的 Web
容 器 无 缝 集 成 。 它 使 用 了 Spring 的 方 式 提 供 了 安 全 和 认 证 安 全 服 务 , 包 括 使 用
BeanContext,拦截器和面向接口的编程方式。因此,Acegi 安全系统能够轻松地适用于
复杂的安全需求。安全涉及到两个不同的概念,认证和授权。前者是关于确认用户是否确
实是他们所宣称的身份。授权则是关于确认用户是否有允许执行一个特定的操作。在
Acegi 安全系统中,需要被认证的用户,系统或代理称为"Principal"。Acegi 安全系统和
其他的安全系统不同,它并没有角色和用户组的概念。
2.Acegi 系统设计
关键组件
Acegi 安全系统包含以下七个关键的功能组件:
Authentication 对象,包含了 Principal,Credential 和 Principal 的授权信息。同时还
可以包含关于发起认证请求的客户的其他信息,如 IP 地址。
2.ContextHolder 对象,使用 ThreadLocal 储存 Authentication 对象的地方。
3.AuthenticationManager,用于认证 ContextHolder 中的 Authentication 对象。
4AccessDecissionManager,用于授权一个特定的操作。
5RunAsManager,当执行特定的操作时,用于选择性地替换 Authentication 对象。
6SecureObject 拦 截 器 , 用 于 协 调
AuthenticationManager,AccessDecissionManager,RunAsManager 和特定操作
的执行。
7ObjectDe/nitionSource,包含了特定操作的授权定义。
这七个关键的功能组件的关系如下图所示(图中灰色部分是关键组件):