一、基本原理
Acegi认证授权主要基于两大技术,一是Filter机制,二是AOP的拦截机制。通过FilterSecurityInterceptor很好地实现了对URI的保护,通过MethodSecurityInterceptor实现了对Service的方法的拦截保护,通过ACL 实现了对prototype类型的Object进行过滤和保护。
二、基本概念
HttpSessionContextIntegrationFilter 存储SecurityContext in HttpSession
ChannelProcessingFilter 重定向到另一种协议,如http到https
ConcurrentSessionFilter 因为不使用任何SecurityContextHolder的功能,但是需要更新SessionRegistry来表示当前的发送请求的principal,通过在web.xml中注册Listener监听Session事件,并发布相关消息,然后由SessionRegistry获得消息以判断当前用户的Session数量。
AuthenticationProcessingFilter 普通认证机制(大多数用这个)
CasProcessingFilter CAS认证机制
BasicProcessingFilter Http协议的Basic认证机制
HttpRequestIntegrationFilter Authentication 从容器的HttpServletRequest.getUserPrincipal()获得
JbossIntegrationFilter 与Jboss相关。
SecurityContextHolderAwareRequestFilter 与servlet容器结合使用。
RememberMeProcessingFilter 基于Cookies方式进行认证。
AnonymousProcessingFilter 匿名认证。
ExceptionTranslationFilter 捕获所有的Acegi Security 异常,这样要么返回一个HTTP错误响应或者加载一个对应的AuthenticationEntryPoint
AuthenticationEntryPoint 认证入口
三、Acegi认证授权流程
1、FilterToBeanProxy 负责代理请求给FilterChainProxy
2、FilterChainProxy 方便的将多个Filter串联起来,如上面基本概念中提到的各种Filter,当然如果对URI进行授权保护,也可以包含FilterSecurityInterceptor。注意各Filter的顺序。
3、AbstractSecurityInterceptor 调度中心。负责调用各模块完成相应功能。
FilterSecurityInterceptor 对URI进行拦截保护
AspectJSecurityInterceptor 对方法进行拦截保护
MethodSecurityInterceptor 对方法进行拦截保护
4、AuthenticationManager 用户认证
-> AuthenticationProvider 实际进行用户认证的地方(多个)。
-> UserDetailsService 返回带有GrantedAuthority的UserDetail或者抛出异常。
5、AccessDecisionManager(UnanimousBased/AffirmativeBased/ConsensusBased) 授权
-> AccessDecisionVoter(RoleVoter/BaseAclEntryVoter) 实际投票的Voter(多个).
6、RunAsManager 变更GrantedAuthority
7、AfterInvocationManager 变更返回的对象
-> BaseInvocationProvider 实际完成返回对象变更的地方(多个)。
分享到:
相关推荐
"acegi-security-resin-0.8.0.jar"是这个压缩包中的核心文件,它是Acegi Security的实现库,包含了所有必要的类和资源,用于在Resin 0.8.0环境中实现安全性控制。将这个jar文件添加到Resin的应用类路径中,可以让...
在`src`目录下,我们可以找到Acegi Security的源代码组织,包括主要的接口和类,如`Authentication`、`GrantedAuthority`、`UserDetails`等。通过阅读源码,我们可以深入理解其内部工作原理,定制和扩展安全策略,以...
这个JAR文件包含了所有必要的类和资源,可以直接添加到Java项目的类路径中,以便利用Acegi Security的功能。 "springframework-license.txt"文件则通常包含的是Apache软件基金会或其他开源许可证的文本,说明了...
开发者可以直接将这个jar文件添加到他们的项目类路径中,以便利用Acegi Security的功能。 5. **springframework-license.txt**:这个文件通常包含软件的许可信息,详细说明了该软件的使用、复制、分发和修改的规则...
"jar"标签表明这是一个Java Archive文件,通常包含Java类、资源和元数据,用于分发和运行Java应用程序或库。在这个案例中,"acegi-security-jboss-0.8.1.jar"是Acegi Security的实现,可以直接部署到JBoss服务器上...
开发者可以通过将其添加到项目的类路径中,来利用Acegi提供的安全功能。此文件可能包含了大量的类和接口,用于处理与安全相关的任务,如身份验证、权限检查等。 "springframework-license.txt"文件则是Spring框架的...
在提供的压缩包文件中,`acegi-security-cas-0.8.1.jar`是实际的库文件,包含了Acegi Security CAS的所有类和资源,可以被Spring应用程序作为依赖引入。而`springframework-license.txt`很可能是Spring框架的许可...
1. **依赖管理**:Acegi Security通常有其他依赖库,如Spring Framework,需要确保这些依赖项正确地添加到项目类路径中。 2. **配置**:在Web应用的配置文件(如web.xml)中添加Acegi Security的过滤器和监听器配置...
6. **springframework-license.txt**: 这个文件通常包含了Spring框架的许可证信息,说明了如何合法地使用和分发这个软件。许可证条款对于开源项目至关重要,它们定义了软件的使用限制和权利。 7. **依赖包**: Acegi...
"springframework-license.txt"文件则可能包含了Spring框架的许可协议,说明了该库的使用条件和版权信息。 在实际使用中,开发者需要了解Acegi Security的配置和API,以便正确地集成到自己的项目中。这通常涉及到...
`acegi-security--license.txt` 文件通常包含框架的许可协议信息,详细说明了软件的使用、复制、修改和分发的法律条款。了解此文件的内容对确保你的项目符合开源软件的使用规定至关重要。 在使用Acegi Security ...
在提供的压缩包中,`ssh1与ssh2整合说明.doc`很可能是关于整合步骤和配置细节的文档,而`ssh`和`ssh1`可能是项目的源代码或者示例工程,包含了具体实现的细节。 学习和理解SSH1和SSH2的整合,不仅可以提升对MVC框架...
本文档为 Spring Security 4.0.3.RELEASE 版本的官方说明文档,详细介绍了 Spring Security 的核心概念、配置方式以及如何在项目中集成和使用它。 #### 二、入门指南 ##### 1.1 什么是 Spring Security? Spring ...
Spring Security(前身称为Acegi Security)是一个强大的安全框架,能够处理认证和授权。 `addresslist.sql`可能是一个SQL脚本文件,包含了创建数据库表、插入初始数据或更新现有数据的命令。在这种情况下,...
<bean id="authenticationProcessingFilterEntryPoint" class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint"> <!-- --> !gotoCas.rol"/> 添加节点: 修改/roller/src/...
这篇详细说明将深入探讨这三个框架如何协同工作,以及如何利用注解(Annotation)来简化配置。 Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建可维护性和扩展性良好的Web应用程序。它提供了丰富的...
文档中提供了Maven和Gradle的使用说明和仓库配置,说明了如何在使用Maven或Gradle的项目中添加Spring Security依赖。 Spring Security 5.1版本引入了新特性,这些新特性改善了安全性、性能以及用户体验。为了快速...
以下是对这些知识点的详细说明: 1. **Spring框架**:Spring是Java企业级应用开发的核心框架,提供了依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)等特性。在用户管理...