RBAC:Role Based Access Control 基于角色的安全控制,Acegi正是基于角色实现权限控制的。角色是一种抽象的逻辑用户分组,代表具有同等权限的用户组,资源和角色相关联,每个用户根据自己具有的角色获得相应的权限,这样就大大简化了授权的逻辑。
Acegi是一个基于Spring开发的安全框架,提供了非常有用的外置式的安全架构。它对web页面的安全保护是通过Filter(过滤器)来实现的,而对业务逻辑组件的方法级别的保护则是通过AOP实现的。
Acegi中有Principal(主体)和Credentials(证书)的概念,它们可以是任意对象,并且由Authentication对象封装,代表一个用户认证,其中Principal通常是用户名,Credentials通常是口令,不过在Acegi中通常将UserDetails作为Principal,除了存储用户名之外,UserDetails还包含了用户角色等权限信息。
org.acegisecurity.Authentication extends java.security.Principal Principal表示主体的抽象概念,它可以用来表示任何实体,例如个人或者公司等等。而Authentication扩展自Principal,表示一次验证请求,一个Authentication在被AuthenticationManager(认证管理器)处理之前被认为是没用通过验证的。
org.acegisecurity.AuthenticationManager 认证管理器,它的任务是对用户进行认证,其手段是通过识别Principal和Credentials来确定用户的身份,一般使用它的实现类ProviderManager处理验证请求。ProviderManager并不直接验证用户提供的Principal和Credentials,而是将他们委托给一个或者多个AuthenticationProvider来验证,只要有一个AuthenticationProvider成功认证了用户,认证过程就结束。
org.acegisecurity.GrantedAuthority 被赋予Authentication的已被认可的权限,GrantedAuthority必须或者能够把自己描述成字符串,或者能够被AccessDecisionManager(决策管理器)明确支持。
身份认证是Acegi安全保护机制的第一步,在用户通过了身份认证后,Acegi必须决定是否允许用户访问某一受保护的资源,这是由org.acegisecurity.AccessDecisionManager(决策管理器)完成的。它的职责是决定是否允许用户访问某一受保护的资源,其decide方法不抛出异常即认为允许访问。
决策管理器的决策过程相当有趣,它基于投票的方式,让一个或者多个具有投票权的AccessDecisionVoter对象进行投票,然后依据投票的结果判断是否允许访问该资源,具体策略依赖于实现,见AffirmativeBased、ConsensusBased、UnanimouseBased。
配置FilterChain,正确配置AuthenticationManager与AccessDecisionManager后,还需要配置一个过滤器链,让每一个过滤器各司其职,完成认证和授权,这也是最为复杂的一步。
常用过滤器简介:
1、ChannelProcessingFilter,确保当前URL以指定的协议进行访问,例如:必须对以secure开头的URL以HTTPS访问。
2、ConcurrentSessionFilter,阻止同一用户在某段时间内多次登录。
3、HttpSessionContextIntegrationFilter,由于用户的认证信息放在HttpSession中,这个过滤器的作用就是从Session中获得用户的认证信息,然后将其关联到当前请求中,如果没有这个过滤器,后续的请求处理就无法获得已认证的用户身份信息。任何需要访问SecurityContextHolder的Filter都必须放在HttpSessionContextIntegrationFilter之后,否则获取的Authentication对象将永远是null。
另外还有LogouFilter、AuthenticationProcessingFilter、SecurityContextHolderAwareRequestFilter、RememberMeProcessingFilter、AnonymousProcessingFilter、ExceptionTranslationFilter、FilterSecurityInterceptor等,它们的具体功能在此不一一详述,可参见Acegi的Javadoc或者相关资料。
注意:Filter的顺序非常重要,因为有的Filter依赖于其它的Filter,总的来说,Filter的顺序应该严格按照上述介绍的顺序排列,但是可以有选择性的使用。
需要特别指出的是最后一个Filter,即FilterSecurityInterceptor,因为真正保护Web资源的正是这个Filter,它通过将URL和相应的角色关联起来,再使用AccessDecisionManager就实现了资源的授权访问。
Acegi的配置看起来很复杂,实际上整个安全管理器框架主要由FilterChainProxy(过滤器链代理)、AuthenticationManager(认证管理器)、AccessDecisionManager(决策管理器)三大组件组成,它们各司其职,配合完成整个安全模块。
分享到:
相关推荐
文档开头简要介绍了Acegi安全系统的基本概念、历史以及版本发布编号。 在整体架构部分,文档解释了运行环境、共享组件、认证机制和安全对象等基本概念。具体来说,认证机制部分详述了系统是如何通过不同的认证提供...
Acegi Security,现已被Spring Security所取代,是Java EE应用程序中的一个强大且灵活的权限管理框架。它提供了全面的身份验证、授权和访问...然而,理解Acegi的基本原理对于理解Spring Security仍然是非常有帮助的。
在深入探讨Acegi Security的源码之前,我们需要了解一些基本概念和背景知识。 首先,让我们来看看Java和Spring框架。Java是一种广泛使用的面向对象编程语言,而Spring框架是Java企业级应用开发的首选平台。Spring...
尽管如此,了解Acegi Security对于理解Spring Security的原理和机制仍然非常有帮助。 在实际的项目中,我们还需要处理一些其他安全问题,如CSRF(跨站请求伪造)防护、XSS(跨站脚本攻击)防护以及输入验证等。...
首先,"学习ACEGI - - New - JavaEye论坛.mht"可能是一个关于Acegi的入门教程,涵盖了Acegi的基本概念和如何在项目中引入Acegi。JavaEye论坛是一个知名的Java开发者社区,其中的帖子通常包含丰富的实践经验和问题...
通过深入学习Acegi,你可以了解Spring Security的基本架构和原理,这对于理解现代的Spring Security配置和使用非常有帮助。尽管Acegi已不再更新,但其思想和技术仍在Spring Security中得到沿用和发展。如果你正在...
本文将深入探讨Spring的Acegi应用及其核心概念。 **1. Acegi Security简介** Acegi Security是Spring框架的一个扩展,它为Spring应用程序提供了全面的身份验证和授权服务。这个库允许开发者以声明式的方式配置安全...
**Spring Acegi(2)** 在Java Web开发中,...如果你正在使用或学习Spring Acegi,了解其原理和实践对于理解Spring Security也会大有帮助。在实际项目中,应优先考虑升级到Spring Security,以利用其最新的安全特性。
首先,让我们了解Acegi Security的基本原理。Acegi Security是一个基于Spring Framework的可插拔安全组件,它可以无缝地集成到Spring应用中,提供全面的身份验证、授权和服务层安全功能。通过使用Acegi Security,...
Acegi是Spring Security的前身,它是一个非常强大的安全框架,用于保护基于Spring的应用程序。...虽然Acegi已经不再是最新的解决方案,但它背后的原理和实践仍然对理解现代Java应用安全有重要的参考价值。
1. **框架概述**:介绍Acegi的基本概念,包括其设计目标、工作原理以及如何与Spring框架集成。 2. **安装和配置**:指导用户如何将Acegi添加到项目中,设置依赖,并提供基础配置的示例。 3. **身份验证...
Acegi的核心概念包括安全上下文、访问决策管理器和权限评估器。 2. **认证过程**: 认证是确定用户身份的过程。Acegi支持多种认证方式,如基于表单的登录、HTTP基本认证、以及自定义认证策略。用户提交的身份验证...
在开始配置Acegi之前,你需要确保已经熟悉Spring框架的基本概念。同时,了解一些基本的安全管理概念也是必要的,比如认证和授权的工作原理等。 ##### 1.2 Acegi Security简介 Acegi Security是一个强大的Spring...
在本文中,我们将深入探讨 Spring Acegi 的核心概念、功能以及如何在实际项目中进行集成和配置。 ### 一、Spring Acegi 的核心概念 1. **认证(Authentication)**:验证用户身份的过程,通常包括用户名和密码的...
在本文中,我们将深入探讨Acegi Security的基本概念、如何集成到Tomcat服务器以及如何通过示例来理解其工作原理。 首先,让我们了解Acegi Security的核心组件。Acegi Security基于责任链模式,它由一系列拦截器...
首先,让我们了解Acegi Security的基本概念。Acegi Security是一个基于Spring的全面安全解决方案,它提供了身份验证、授权、会话管理和访问控制等功能。通过与Spring的无缝集成,开发者可以轻松地在应用中添加安全...
首先,Acegi Security的核心概念包括`Authentication`(认证)和`Authorization`(授权)。`Authentication`是验证用户身份的过程,通常涉及用户名和密码的检查。`Authorization`则是确定已认证的用户是否有权执行...
尽管Grails社区后来推出了更现代的安全插件,如Spring Security,但Acegi 0.2.1插件对于学习基本的权限控制概念仍具有一定的参考价值。了解这个插件的工作原理,有助于开发者在遇到类似问题时,能够迅速找到解决方案...
本文将详细介绍Grails Acegi 0.1插件的基本概念、工作原理以及实际应用。 一、Grails Acegi 0.1插件概述 Grails Acegi 0.1是Grails框架的一个早期版本插件,它引入了Spring Security的核心功能,使开发者能够轻松...
在分析`acegi-security-1.0.4.jar`的源码之前,我们需要了解Acegi Security的基本概念和架构。 Acegi Security的核心目标是提供一个灵活、可扩展的安全框架,允许开发者对用户认证、授权进行细粒度控制。它基于...