ACEGI SECURITY FOR SPRINGFRAMEWORK 1 目录 2 Acegi简介 3 Acegi系统设计 3 关键组件 3 安全管理对象 4 安全配置参数 5 Resuest Contexts 5 Contexts 5 Secure Contexts 6 Custom Contexts 6 Context Storage 7 Acegi如何工作 7 认证授权流程 9 授权机制 12 SkyonFramework 对 Acegi 的扩展 13 FilterInvocationDefinitionSourceDynamicExtentionEditor 14 FilterInvocationDefinitionSourceHolder 15 ResourceMappingProvider 17 SecurityEnforcementDynamicExtensionFilter 17 FilterInvocationDefinitionSourceListener 18 Struts动态菜单支持 18 ### Acegi安全系统详解 #### Acegi简介 Acegi安全系统是专为Spring Framework设计的安全框架,能够无缝集成到各种Web容器中。该系统通过利用Spring的特性(如Bean Context、拦截器和面向接口编程)提供了强大的认证和授权功能,非常适合应用于复杂的业务场景。 安全系统主要包括两个核心概念:**认证**(Authentication)和**授权**(Authorization)。认证过程确认用户的身份,而授权则判断已认证的用户是否有权执行特定操作。 在Acegi中,“Principal”是指任何需要认证的对象,如用户、系统或代理。值得注意的是,Acegi不同于传统的安全框架,并不区分角色和用户组,而是采取更为灵活的方式来处理权限分配。 **优点**: - 完全遵循J2EE规范。 - 采用AOP实现,使得安全功能与业务逻辑解耦。 - 具备高度灵活性,可以与其他认证方式集成,如容器认证、CAS SSO、X509等。 - 强大的ACL权限控制能力,支持对Service和Domain Object级别的权限控制。 - 可以在现有权限系统中应用,对数据库表结构无强制要求,只需满足基本条件即可。 **缺点**: - 必须依赖于Spring框架的支持。 #### Acegi系统设计 Acegi安全系统的架构设计围绕着几个核心组件展开,这些组件协同工作以实现安全功能。 - **Authentication对象**:存储Principal、凭证及其授权信息。还可能包括其他客户信息,例如IP地址。 - **ContextHolder对象**:利用ThreadLocal来存储Authentication对象。 - **AuthenticationManager**:负责验证存储在ContextHolder中的Authentication对象的有效性。 - **AccessDecisionManager**:决定用户是否有权限执行某个特定操作。 - **RunAsManager**:在执行特定操作时,根据需要替换当前的Authentication对象。 - **SecureObject拦截器**:协调AuthenticationManager、AccessDecisionManager、RunAsManager与实际操作的执行。 - **AfterInvocationManager**:在SecureObject执行完毕后,对对象进行某些处理,例如移除未授权的权限信息。 - **ACL管理包**:用于获取特定Domain Object实例的可用ACL。 其中,“SecureObject”拦截器是Acegi Security的核心组件之一,它体现了该系统的架构特点。如图1所示,关键类之间相互协作,而`AbstractSecurityInterceptor`是其主要实现类。 ![Acegi Key Secure Object Model](#) **图1**:“SecureObject”模型的关键组件 #### 安全管理对象 Acegi支持三种类型的安全管理对象: 1. **MethodInvocation**:这类对象用于管理Spring容器中的业务对象,开发者可以通过它们保护这些对象。通常情况下,Spring管理的Bean会通过`ProxyFactoryBean`和`BeanNameAutoProxyCreator`进行代理配置,类似于Spring事务管理。 2. **AspectJ Join Point**:使用AspectJ来管理Domain Object实例的安全,特别适合那些不在Spring Bean容器管理范围内的对象。通过Acegi,可以对标准构造函数(如`new Person()`)进行安全控制。 3. **FilterSecurityInterceptor**:该组件用于Web应用程序的安全管理,通过过滤器链拦截HTTP请求,确保只有授权的用户才能访问资源。 #### 安全配置参数 Acegi支持多种配置选项,以适应不同的安全需求。例如,可以通过配置文件或代码设置认证管理器、授权决策管理器等组件的具体实现。此外,还可以定义自定义的安全上下文、存储策略等,进一步增强系统的灵活性和可定制性。 #### 认证授权流程 认证授权流程是Acegi安全系统的核心部分。当用户尝试访问受保护资源时,系统首先检查用户是否经过了认证。如果未认证,则重定向至登录页面;若已认证,则进一步检查用户是否拥有相应的权限。整个流程涉及多个步骤和组件,确保安全性的同时也保持了灵活性。 #### 授权机制 Acegi采用了多种机制来实现细粒度的授权管理。除了基于角色的访问控制(RBAC)外,还包括属性级别的权限控制。这意味着不仅可以控制用户能否访问某个方法,还能指定用户在访问该方法时可以执行哪些操作。 #### SkyonFramework对Acegi的扩展 SkyonFramework通过一系列扩展组件增强了Acegi的安全功能,具体包括: - **FilterInvocationDefinitionSourceDynamicExtensionEditor** - **FilterInvocationDefinitionSourceHolder** - **ResourceMappingProvider** - **SecurityEnforcementDynamicExtensionFilter** - **FilterInvocationDefinitionSourceListener** 这些组件分别在不同的层面上扩展了Acegi的功能,例如动态更新安全配置、提供资源映射服务等,从而提升了Acegi的整体性能和适用性。 #### Struts动态菜单支持 除了核心的安全功能外,Acegi还提供了对Struts框架的支持,特别是动态菜单的生成。通过集成Acegi,可以在Struts应用中实现基于用户权限的动态菜单展示,确保每个用户仅能看到自己有权访问的菜单项。 Acegi安全系统为Spring应用程序提供了全面而灵活的安全解决方案。无论是复杂的业务逻辑还是简单的权限控制,Acegi都能够提供强大的支持。对于需要高度安全性保障的应用而言,Acegi无疑是理想的选择之一。
剩余12页未读,继续阅读
- 粉丝: 10
- 资源: 17
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 5G SRM815模组原理框图.jpg
- T型3电平逆变器,lcl滤波器滤波器参数计算,半导体损耗计算,逆变电感参数设计损耗计算 mathcad格式输出,方便修改 同时支持plecs损耗仿真,基于plecs的闭环仿真,电压外环,电流内环
- 毒舌(解锁版).apk
- 显示HEX、S19、Bin、VBF等其他汽车制造商特定的文件格式
- 操作系统实验 Ucore lab5
- 8bit逐次逼近型SAR ADC电路设计成品 入门时期的第三款sarADC,适合新手学习等 包括电路文件和详细设计文档 smic0.18工艺,单端结构,3.3V供电 整体采样率500k,可实现基
- 操作系统实验 ucorelab4内核线程管理
- 脉冲注入法,持续注入,启动低速运行过程中注入,电感法,ipd,力矩保持,无霍尔无感方案,媲美有霍尔效果 bldc控制器方案,无刷电机 提供源码,原理图
- Matlab Simulink#直驱永磁风电机组并网仿真模型 基于永磁直驱式风机并网仿真模型 采用背靠背双PWM变流器,先整流,再逆变 不仅实现电机侧的有功、无功功率的解耦控制和转速调节,而且能实
- 157389节奏盒子地狱模式第三阶段7.apk
评论0