最近在研究安全性框架:acegi-security:
acegi安全系统,是一个用于spring framework的安全框架,能够和目前流行的web容器无缝集成。它使用了spring的方式提供了安全和认证安全服务,包括使用bean context,拦截器和面向接口的编程方式。因此,acegi安全系统能够轻松地适用于复杂的安全需求。
安全涉及到两个不同的概念,认证和授权。前者是关于确认用户是否确实是他们所宣称的身份。授权则是关于确认用户是否有允许执行一个特定的操作。
在acegi安全系统中,需要被认证的用户,系统或代理称为"principal"。acegi安全系统和其他的安全系统不同,它并没有角色和用户组的概念。
acegi系统设计
关键组件
acegi安全系统包含以下七个关键的功能组件:
l authentication对象,包含了principal,credential和principal的授权信息。同时还可以包含关于发起认证请求的客户的其他信息,如ip地址。
2 contextholder对象,使用threadlocal储存authentication对象的地方。
3 authenticationmanager,用于认证contextholder中的authentication对象。
4 accessdecissionmanager,用于授权一个特定的操作。
5 runasmanager,当执行特定的操作时,用于选择性地替换authentication对象。
6 secure object拦截器,用于协调authenticationmanager,accessdecissionmanager,runasmanager和特定操作的执行。
7 objectdefinitionsource,包含了特定操作的授权定义。
安全管理对象
acegi安全系统目前支持两类安全管理对象。
第一类的安全管理对象管理aop alliance的methodinvocation,开发人员可以用它来保护spring容器中的业务对象。为了使spring管理的bean可以作为methodinvocation来使用,bean可以通过proxyfactorybean和beannameautoproxycreator来管理,就像在spring的事务管理一样使用。
第二类是filterinvocation。它用过滤器(filter)来创建,并简单地包装了http的servletrequest,servletresponse和filterchain。filterinvocation可以用来保护http资源。通常,开发人员并不需要了解它的工作机制,因为他们只需要将filter加入web.xml,acegi安全系统就可以工作了。
安全配置参数
每个安全管理对象都可以描述数量不限的各种安全认证请求。例如,methodinvocation对象可以描述带有任意参数的任意方法的调用,而filterinvocation可以描述任意的http url。
acegi安全系统需要记录应用于每个认证请求的安全配置参数。例如,对于bankmanager.getbalance(int accountnumber)方法和bankmanager.approveloan(int applicationnumber)方法,它们需要的认证请求的安全配置很不相同。
为了保存不同的认证请求的安全配置,需要使用配置参数。从实现的视角来看,配置参数使用configattribute接口来表示。acegi安全系统提供了configattribute接口的一个实现,securityconfig,它把配置参数保存为一个字符串。
configattributedefinition类是configattribute对象的一个简单的容器,它保存了和特定请求相关的configattribute的集合。
当安全拦截器收到一个安全认证请求时,需要决定应用哪一个配置参数。换句话说,它需要找出应用于这个请求的configattributedefinition对象。这个查找的过程是由objectdefinitionsource接口来处理的。这个接口的主要方法是public configattributedefinition getattributes(object object),其中object参数是一个安全管理对象。因为安全管理对象包含有认证请求的详细信息,所以objectdefinitionsource接口的实现类可以从中获得所需的详细信息,以查找相关的configattributedefiniton对象。
acegi如何工作
为了说明acegi安全系统如何工作,我们设想一个使用acegi的例子。通常,一个安全系统需要发挥作用,它必须完成以下的工作:
l 首先,系统从客户端请求中获得principal和credential;
2 然后系统认证principal和credential信息;
3 如果认证通过,系统取出principal的授权信息;
4 接下来,客户端发起操作请求;
5 系统根据预先配置的参数检查principal对于该操作的授权;
6 如果授权检查通过则执行操作,否则拒绝。
分享到:
相关推荐
这个"acegi-security-tiger-1.0.0-RC2.jar.zip"压缩包包含的是Acegi Security的一个早期版本——1.0.0 Release Candidate 2(RC2),专门针对Tiger(Java SE 5.0)版本的Java开发环境。 Acegi Security的主要功能...
acegi-security 1.0.2.jar
acegi-security-0.8.3驱动程序
Acegi是一个专门为SpringFramework提供安全机制的项目,全称为Acegi Security System for Spring.
acegi-security-1.0.7.jar
acegi-security-1.0.4.jar
1. 将`acegi-security-0.6.1.jar`添加到项目构建路径。 2. 配置Spring XML配置文件,声明Acegi Security的相关bean,如`AuthenticationManager`、`AuthorizationManager`等。 3. 定义安全策略,包括访问控制规则、...
总的来说,"acegi-security-0.8.1.1.jar.zip"是一个关键的安全组件,对于那些需要在Spring环境下实现复杂安全策略的开发者来说,它提供了强大的工具和基础。尽管Acegi Security已经被Spring Security替代,但对于...
acegi-security-1.0.7-sources jar 包
这个"acegi-security-1.0.7.jar.zip"文件包含的是Acegi Security 1.0.7版本的库,它是一个压缩的Java Archive(JAR)文件,专门设计用于增强Spring框架的安全功能。 Acegi Security的核心功能包括身份验证、授权和...
`acegi-security--license.txt` 文件通常包含软件的许可协议信息,对于Acegi Security 1.0.4来说,这可能是Apache License Version 2.0,这是一个广泛使用的开源软件许可证,允许自由地使用、修改和分发软件,但要求...
`acegi-security-0.8.3.jar.zip` 是这个框架的一个特定版本的压缩包,包含了版本号为0.8.3的Acegi Security JAR文件。 在Java世界里,JAR(Java Archive)文件是一种用于打包Java类和资源的标准格式,便于分发和...
acegi-security-1.0.5.jar java权限控制应用包下载
"acegi-security-jetty-0.8.3.jar.zip"文件是Acegi Security与Jetty服务器特定版本(0.8.3)的集成包,它包含了Acegi Security的jar文件以及相关的许可证信息。 Acegi Security的主要功能包括: 1. **身份验证**:...
在分析`acegi-security-1.0.4.jar`的源码之前,我们需要了解Acegi Security的基本概念和架构。 Acegi Security的核心目标是提供一个灵活、可扩展的安全框架,允许开发者对用户认证、授权进行细粒度控制。它基于...
标题中的"acegi-security.jar.zip"是一个包含Acegi Security框架的压缩文件。"jar"是指Java Archive,是Java平台上的一个文件格式,用于集合多个类文件、相关的元数据和资源(如图片、声音或文本)到单个文件中,以...
在这个" Acegi-security-samples-tutorial-1.0.7.zip "压缩包中,包含了一个详细的教程实例,帮助开发者理解并掌握Acegi Security的使用方法。通过将这些示例代码导入到自己的项目并添加注释,我们可以更深入地学习...
`acegi-security-0.8.1.jar`是该框架的库文件,包含了所有必要的类和资源,用于在项目中引入Acegi Security的功能。开发者通常会将这个JAR文件添加到项目的类路径中,以便使用其提供的服务。 `springframework-...
这个“acegi-security-0.8.2.jar.zip”文件包含的是Acegi Security 0.8.2版本的JAR包以及相关的许可证信息。 Acegi Security的核心功能是为Java应用程序提供身份验证(Authentication)和授权(Authorization)服务...
压缩包中的"acegi-security-resin-0.8.3.jar"是主要的库文件,包含了Acegi Security与Resin的集成代码,开发者需要将其部署到Resin的应用服务器环境中,以启用安全功能。而"springframework-license.txt"文件则是...