Acegi的配置出问题了:
1, 登录后所有连接都能访问. -->
2, 同样的IP,同样的浏览器中可以在不Logout情况下连续登录.
3, 即使不登录也能访问里面的连接.
找到Acegi的配置文件看了又看,那么长的配置,那么多的Bean,又是那么长的类名,一头雾水,这可从哪下手呢?Google,Baidu里搜索了一番也没有找到合适的答案.倒是找到以前写的博客,这让我想起以前为了解决登录类型问题时就多多少少研究过Acegi,不过当时也只是单独从配置文件来看的,根本没没接触它背后的实现.那个问题(登录类型)解决后就把Acegi又放下了.
看来现在又到了跟Acegi交手的时候了.
与上次不同,这次交手更多地是从其背后的实现上来理解它的配置.
Acegi是解决Java里提供安全保护的开源框架,它的核心内容就是认证(Authentication)与授权(Authorization).那认证是什么授权又是什么?第一次听到认证这人词,就不由自主地想到了现在四六级证,毕业证学位证啥的,这里的认证与我们常的证有什么联系?一点点的联系也没有?
结合自己以前的理解再好好的搜了下后,得出如下的认识:
安全(Security)保护是为系统提供一套机制,以便让系统的功能只让一部分人操作.这个生活中有很多的实例,比如说我们给门加锁,加了锁后就只能是有钥匙的人才能正常的进去.而认证与授权正是安全保护所应用的两个手段(一时想不到什么更贴切的词,就先用"手段"吧),JavaEE里有个专门的缩写JAAS就是说这个事儿,其中认证是围绕"你是谁?"这个问题展开的,而授权是围绕"你可以做什么"展开的.
生活中有什么形象的例子来帮助我们理解认证与授权两个有些怪怪的词儿呢?当然有的,以我们用ATM取钱为例,我们插入银行卡,输入密码,密码正确后我们才可以进行像查询,取钱,转帐这样的操作.对密码的验证就是看看你是不是银行卡的Owner,这个"看看"的动作在安全保护里就叫作"认证"了,认证成功后,系统记下你的信息,这样我们就可以做实打实的事了,这个实打实的事的操作是有权限的,我们肯定不希望别人来取我们的钱,只能通过"认证"这一关的人才可能取钱.
上面的例子有些简化或者说一些步骤合在一起了.大家都认为"取钱"这一操作是需要保护,也没有对用户是否登录的验证(因为我们取钱时与AMT的Session很短,也就是取完一次后就退出了).而在软件里做安全保护时,这两个虽然不是最重要的,但也是必须的.
于是有了下面示意图:
(1)处的"Is secure resource"对应着我们取钱时默认的规则,也就是对每一个请求Acegi先判断下要访问的Resource是否是受保护的.
(2)处的Principal exists也就是的取钱时对用户是否登录的验证.若没有登录就到(3)处的Login.若是已登录的,就直接到(4)处的Principal has authorized role判断.
(3)处的Login OK对应着取钱时的输入密码及对其的验证,若成功就到(4)处的判断.
(4)处的判读是看当前用户是否有操作的授权,在取钱时,ATM机会自动地把那些没权操作的选项隐藏起来,可选的操作当然也都是有权的了.
这样经过这么一系列的筛选,我们终于可以取到钱了.
这是对Acegi的一个大致了解,但上图所示的四步具体是怎么实现的以及可以通过什么配置来达到这种层层设防的效果呢?在下篇博客中我将试着做些解释.
- 描述: AcegiProcess
- 大小: 855.5 KB
分享到:
相关推荐
它通过提供一系列可配置的拦截器和策略,使得安全控制能够无缝集成到Spring MVC和Spring事务管理中。 Acegi Security 1.0.7是该框架的一个特定版本,发布于2007年,包含了对当时已知问题的修复和改进。它支持多种...
Acegi Security是一个在Java开发领域广泛应用的开源安全框架,它主要为基于J2EE的企业级应用程序提供了全面且强大的安全解决方案。这个框架的核心在于其高度的灵活性和可扩展性,允许开发者根据具体需求定制安全策略...
Spring是一个全面的企业级应用开发框架,提供了一系列核心模块,如依赖注入(Dependency Injection),面向切面编程(Aspect-Oriented Programming),以及数据访问和事务管理。Spring还与许多其他框架(如Acegi ...
这个JAR文件包含了一系列类和配置,使得Acegi Security可以与Tomcat服务器无缝协作。通过引入这个库,开发者能够在Tomcat上实现Acegi Security的安全策略,如定义安全性拦截器、配置访问控制规则等。 "acegi-...
总的来说,Acegi Security Taglib-0.6.jar.zip是一个用于Spring Web应用的安全控制库,它通过提供一系列JSP标签简化了用户认证和授权的实现,使得开发者能够更专注于应用的业务逻辑,而无需过多关注底层的安全细节。...
Acegi Security 1.0.7是一个重要的里程碑,它包含了一系列的修复和改进,旨在提升系统的安全性和稳定性。 首先,让我们深入了解一下Acegi Security框架。Acegi Security是基于Spring框架的一个扩展,它允许开发者在...
综上所述,Acegi Security是一个功能强大且高度可配置的安全管理工具,它支持多种认证机制和授权策略,可以满足不同类型应用程序的需求。通过深入理解其架构和配置细节,开发者可以更好地利用Acegi Security来保护...
总的来说,Acegi Security Catalina 0.8.0 提供了一种有效的方式来增强基于Spring和Tomcat的应用程序的安全性,通过详细的配置和适当的依赖管理,开发者能够构建出符合企业级安全标准的Web应用。虽然Acegi Security...
总的来说,这个合集提供了一个全面的学习路径,从基础概念到具体配置,再到实战经验,对于想要深入了解Acegi或者解决相关问题的开发者来说是一份宝贵的资源。通过学习这些内容,你可以了解到如何利用Acegi来实现强大...
Acegi Security是一个已废弃的安全框架,它在早期的Spring生态系统中被广泛用于提供身份验证和授权功能。这个"acegi-security-jetty-0.8.1.jar.zip"压缩包包含了Acegi Security的一个版本,该版本是针对Jetty服务器...
1. **Acegi安全框架**:Acegi是Spring的一个扩展,主要用于处理认证和授权问题,提供了一种声明式的安全控制方式。通过Acegi,开发者可以在控制器、服务层或者DAO层添加安全控制,无需在每个方法中手动检查权限。 2...
它包括了认证(Authentication)、授权(Authorization)、会话管理(Session Management)以及一系列其他安全特性,如CSRF(跨站请求伪造)防护和XSS(跨站脚本攻击)防护等。这个0.7.1版本可能包含了一些修复的bug...
Acegi Security Taglib 提供了一系列的标签,例如`<acegi:authentication>`用于处理用户身份验证,`<acegi:access>`用于定义访问控制等。 在使用`acegi-security-taglib-0.51.jar`时,首先需要将其添加到项目类路径...
标签库通常包含了一系列的JSP标签,例如`<acegi:user>`可以用来获取当前登录用户的信息,`<acegi:access>`则可以用来判断当前用户是否有执行某个操作的权限。Acegi Security Taglib还提供了一些其他标签,如用于显示...
Acegi Security 0.7.0是该框架的一个较早版本,它包含了一系列的安全组件和工具,如认证管理、访问决策、权限表达式等。这个版本的Acegi Security主要关注于为基于Spring的应用程序提供细粒度的安全控制。它的核心...
配置方面,Acegi通过FilterToBeanProxy在Web.xml中配置过滤器,这个过滤器委托给Spring的FilterChainProxy,其中包含一系列处理认证的过滤器,每个过滤器都有特定的功能。Filter-mapping则定义了这些过滤器的URL匹配...
`UserDetails`类是Acegi中表示用户信息的标准接口,定义了一系列用于描述用户状态的方法,如`getUsername()`、`getPassword()`、`isEnabled()`等。 #### 十、AuthenticatedVoter类 `AuthenticatedVoter`是`...
如果`targetClass`为`FilterChainProxy.class`,那么Spring将获取名为`delegate`的bean,该bean实际是安全过滤器链的代理,负责执行一系列的安全检查。 ##### 3. pattern匹配与Filter链转换 在处理web请求时,`...
`浅谈Acegi配置.mht`系列文件可能探讨了Acegi的配置过程,包括基本的配置元素如`<security:global-method-security>`和`<security:http>`,以及如何定义权限表达式和自定义过滤器。Acegi的配置是其强大之处,但也...
在阅读《Spring ACEGI手册(部分)》.doc文档时,可以深入学习如何配置和使用该框架,以及如何解决常见的安全问题。 **总结** Spring ACEGI作为一个强大的安全框架,为开发者提供了丰富的工具和机制来保护应用程序...