Acegi认证授权主要基于两大技术,一是Filter机制,二是AOP的拦截机制。通过FilterSecurityInterceptor很好地实现 了对URI的保护,通过MethodSecurityInterceptor实现了对Service的方法的拦截保护,通过ACL 实现了对prototype类型的Object进行过滤和保护。 Acegi 是一个基于 Java 的安全框架,主要用于身份验证和授权管理。这个框架是Spring Security的前身,因此在很多老版本的Spring项目中被广泛使用。Acegi 的核心机制包括Filter和AOP(面向切面编程)拦截器,使得它能够灵活地保护Web应用中的资源。 1. **Filter机制**: Acegi 使用Filter机制来拦截HTTP请求。在`web.xml`中配置`FilterToBeanProxy`,这个Filter不是直接执行过滤操作,而是委托给Spring容器中的`FilterChainProxy`。`FilterChainProxy`管理着一系列的过滤器,每个过滤器都有特定的安全功能,如认证、授权等。例如,`basicProcessingFilter`负责基本的身份验证,而`exceptionTranslationFilter`则处理认证或授权失败时的异常。 2. **AOP拦截机制**: Acegi 利用AOP的概念,通过`MethodSecurityInterceptor`对Service层的方法进行拦截,实现方法级别的安全控制。这意味着,不仅可以保护URL,还可以细化到对服务接口的每一个方法进行访问控制。 3. **ACL(Access Control List)**: ACL是Acegi提供的一种机制,用于精细控制对对象的访问权限。它可以对原型(prototype)类型的对象进行过滤和保护,确保只有拥有相应权限的用户才能操作这些对象。 4. **配置详解**: - **web.xml配置**:`FilterToBeanProxy`配置需要指定目标类`FilterChainProxy`。`filter-mapping`定义了哪些URL会被Acegi的安全过滤器拦截。通常,我们只对特定后缀如.do或.jsp的请求进行安全控制,但也可以通过配置`/*`来拦截所有请求。 - **Acegi安全文件配置**:`FilterChainProxy`的配置包含了一系列过滤器,它们按照定义的顺序执行。`CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON`确保URL在匹配时转换为小写,避免大小写敏感问题,`PATTERN_TYPE_APACHE_ANT`使用Apache Ant风格的路径匹配规则。 5. **过滤链配置**: 过滤链定义了请求如何通过一系列过滤器。例如,`/**=httpSessionContextIntegrationFilter,basicProcessingFilter,exceptionTranslationFilter,...`表示所有请求都将经过这些过滤器,每个过滤器都有特定的职责,如`httpSessionContextIntegrationFilter`用于整合HTTP session与安全上下文,`exceptionTranslationFilter`处理异常转换。 6. **实际应用**: 在实际项目中,根据需求调整过滤链的配置,以满足不同层次的保护。例如,可能需要添加自定义的过滤器来实现特定的安全策略,或者调整过滤器的顺序以优化性能。 Acegi 提供了一套完整的Web应用程序安全解决方案,通过Filter和AOP技术实现了灵活的身份验证、授权和对象级访问控制。通过深入理解和配置Acegi,开发者可以构建出安全且易于维护的Spring应用。
剩余59页未读,继续阅读
- 粉丝: 4
- 资源: 25
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (Vim Linux)mamba-ssm-1.1.1-cp310-cp310-linux-x86-64.whl
- Mac软件工具Cisdem AppCrypt for Mac v7.9.0
- Adersoft.VbsEdit.v7.4261
- 基于C#开发的简易计算器
- 深度卷积神经网络(Deep Convolutional Network)在MNIST数据集上的应用(附数据集)
- AID 数据集 AID 是一个新的大规模航拍图像数据集
- Linux系统下Ubuntu 20.04 LTS的安装指南与初步配置教程
- update9-20250108.5.207.slice.img.7z.001.pd
- 判断正整数是否为平方数倍数的数学与编程实现方法解析
- Docker容器引擎详解: 容器化技术、特点及应用场景与操作命令
- 网页提取_QQ浏览器_20250108.pdf
- 先进有趣的科研工作室,致力于各种优化算法开发及其应用、机器学习、深度学习、数值计算、建模仿真、路径规划......并构建一站式学
- Matlab仿真实践任务书 - GUI计算器求解方程及方程组
- Matlab设计-A交通标志识别[语音播报,GUI界面,解析].zip
- Matlab设计- FIR滤波器语音降噪(GUI框架,可指导运行).zip
- Matlab设计-标志是识别系统(雾霾,曝光,雨雪场景,GUI界面).zip