`
morle
  • 浏览: 75275 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

acegi学习随感

阅读更多

  自接触到acegi认证体系来,在网上搜了些资料,到目前为止,做个笔记,来加深对acegi的学习

 acegi1.04,spring2.0

acegi 配置,涉及登陆验证filter,没有Interceptor

xml 代码 
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. >  
  3.   
  4. <beans>  
  5.     <!---->  
  6.     <!---->  
  7.     <bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">  
  8.         <property name="filterInvocationDefinitionSource">  
  9.             <value>  
  10.                 CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON   
  11.                 PATTERN_TYPE_APACHE_ANT   
  12.                 /**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter   
  13.             value>  
  14.         property>  
  15.     bean>  
  16. beans>  

 

Fiter chain说明:

   1.   httpSessionContextIntegrationFilter:

     每次request前 HttpSessionContextIntegrationFilter从Session中获取Authentication对象,在request完后又把Authentication对象保存到Session中供下次request使用,此filter必须其他Acegi filter前使用

 在上述代码添加下列段,实例化中属性context默认为SecurityContextImpl.class

xml 代码 
  1. <bean id="httpSessionContextIntegrationFilter" class="org.acegisecurity.context.HttpSessionContextIntegrationFilter" />  

   2.  authenticationProcessingFilter:   

通过Providers提供认证者列表,如果一个认证提供者失败可以尝试另外一个认证提供者,以保证获取不同来源的身份认证,如
         DaoAuthenticationProvider 从数据库中读取用户信息验证身份,可自定义验证身份
         AnonymousAuthenticationProvider 匿名用户身份认证
         RememberMeAuthenticationProvider 已存cookie中的用户信息身份认证
         RunAsImplAuthenticationProvider 对身份已被管理器替换的用户进行验证

         其它的还有
         AuthByAdapterProvider 使用容器的适配器验证身份
         CasAuthenticationProvider 根据Yale中心认证服务验证身份, 用于实现单点登陆
         JaasAuthenticationProvider 从JASS登陆配置中获取用户信息验证身份
         RemoteAuthenticationProvider 根据远程服务验证用户身份
         X509AuthenticationProvider 从X509认证中获取用户信息验证身份
         TestingAuthenticationProvider 单元测试时使用

         每个认证者会对自己指定的证明信息进行认证,如DaoAuthenticationProvider仅对UsernamePasswordAuthenticationToken这个证明信息进行认证。
    

本人代码如下:DaoAuthenticationProvider,AnonymousAuthenticationProvider ,RememberMeAuthenticationProvider ,RunAsImplAuthenticationProvider ,只需其中的一个通过认证,即可 <property name="key"></property>

  1. <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">  
  2.     <property name="providers">  
  3.         <list>  
  4.                 <ref local="daoAuthenticationProvider" />  
  5.                 <ref local="anonymousAuthenticationProvider" />  
  6.                 <ref local="rememberMeAuthenticationProvider" />  
  7.                 <ref local="runAsAuthenticationProvider" />  
  8.         list>  
  9.     property>  
  10. bean>  

2.1.基于数据库的认证提供者daoAuthenticationProvider:

         authenticationDao 认证数据访问对象,用于获取用户信息,包括:用户名,用户密码,用户状态和用户权限 
          可自定义,本人采用继承org.acegisecurity.providers.dao.DaoAuthenticationProvider的DAO,覆盖retrieveUser和additionalAuthenticationChecks方法,其中的字段userDetailsService,可以通过两种inMemory 或 jdbcDaoImpl获取用户信息,包括:用户名,用户密码,用户状态和用户权限,也可以通过自定义其他方法获取用户信息,覆盖loadUserByUsername方法,本人采用后一种      
         userCache ehcache 缓存user信息

xml 代码 
  1. <bean id="daoAuthenticationProvider" class="com.d3.gamestat.web.AuthenticationProviderDao">  
  2.     <property name="userDetailService"><ref local="jdbcHbmServiceImp"/>property>    
  3.     <property name="userCache"><ref local="userCache"/>property>  
  4. bean>  
  5.        
  6. <bean id="jdbcHbmServiceImp" class="com.d3.gamestat.web.JdbcHbmServiceImp">    
  7.     <property name="serviceProxy"><ref bean="gameStatServiceProxy"/>property>    
  8.     <property name="serviceId"><value>scurityUserManagervalue>property>    
  9.     <property name="methodName"><value>getUservalue>property>  
  10. bean>  
  11. <bean id="userCache" class="org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache">    
  12.     <property name="cache"><ref local="userCacheBackend"/>property>  
  13. bean>       
  14. <bean id="userCacheBackend" class="org.springframework.cache.ehcache.EhCacheFactoryBean">    
  15.     <property name="cacheManager"><ref local="cacheManager"/>property>    
  16.     <property name="cacheName"><value>userCachevalue>property>  
  17. bean>       
  18. <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"/>  

  2.2认证提供者anonymousAuthenticationProvider,用于认证匿名用户,字段key中是org.acegisecurity.providers.anonymous.AnonymousProcessingFilter中的key字段

xml 代码 
  1. <bean id="anonymousAuthenticationProvider" class="org.acegisecurity.providers.anonymous.AnonymousAuthenticationProvider">  
  2.     <property name="key"><value>ssl</value></property>  
  3. </bean>  

 2.3认证提供者rememberMeAuthenticationProvider,用于认证 cookies 登陆,字段key中是org.acegisecurity.ui.rememberme.RememberMeProcessingFilter中rememberMeServices中的key字段  

xml 代码 
  1. <bean id="rememberMeAuthenticationProvider" class="org.acegisecurity.providers.rememberme.RememberMeAuthenticationProvider">  
  2.     <property name="key"><value>springRocks</value></property>  
  3. </bean>  

 

2.4认证提供者runAsAuthenticationProvider,用于认证 更改用户信息,字段key中是org.acegisecurity.runas.RunAsManagerImpl中的key字段

xml 代码 
  1. <bean id="runAsAuthenticationProvider" class="org.acegisecurity.runas.RunAsImplAuthenticationProvider">  
  2.     <property name="key"><value>runAs</value>property>  
  3. bean>  

 3.anonymousProcessingFilter

    anonymousProcessingFilter的作用是判断ContextHolder中是否有Authentication对象,如果没有就创建一个Authentication对象,其中包含的用户名是anonymousUser,用户权限是ROLE_ANONYMOUS。这使得没有登录的匿名用户能够自动的获得匿名的用户名和权限

xml 代码 
  1. <bean id="anonymousProcessingFilter" class="org.acegisecurity.providers.anonymous.AnonymousProcessingFilter">  
  2.     <property name="key"><value>sslvalue>property>  
  3.     <property name="userAttribute">  
  4.         <value>anonymousUser,ROLE_ANONYMOUSvalue>  
  5.     property>  
  6. bean>  

 4.exceptionTranslationFilter:

   用户尚未通过身份验证时,会将控制转交到一个认证入口点,提供三种实现
    BasicProcessingFilterEnteyPoint :HTTP基本认证处理
    AuthenticationProcessingFilterEntryPoint :将用户重新定向到一个基于HTML表单的登入界面
    CasProcessingFilterEntryPoint :将用户重新定向到一个基于Yale CAS登入界面

xml 代码 
  1. <bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter">  
  2.     <property name="authenticationEntryPoint">  
  3.       <bean class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint">  
  4.          <property name="loginFormUrl" value="/login.jsp"/>  
  5.          <property name="forceHttps" value="false"/>  
  6.       bean>  
  7.    property>  
  8.    <property name="accessDeniedHandler">  
  9.      <bean class="org.acegisecurity.ui.AccessDeniedHandlerImpl">  
  10.        <property name="errorPage" value="/login.jsp"/>  
  11.      bean>  
  12.   property>  
  13. bean>  

编辑器总出问题,本想全部发布在上面,无奈,先写这些,鉴于本人能力有限,希望给某些人一点参考

 
分享到:
评论
1 楼 camelr 2007-07-09  
能详细解释一下filterInvocationDefinitionSource属性的设置含义么?下面代码中三行值是如何映射到对象实例中的?
# CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON   
#                 PATTERN_TYPE_APACHE_ANT   
#                 /**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter

谢谢!

相关推荐

    acegi学习整理合集

    "学习Acegi-认证(authentication) - Acegi 专栏 - JavaEye知识库.mht"和"Acegi学习小结 - Acegi 专栏 - JavaEye知识库.mht"可能提供了更深入的认证学习材料和作者的学习心得,包括可能遇到的问题和解决方案,这对于...

    Acegi学习笔记(JAVA系统安全编程时用到)

    Acegi 是一个强大的 Java 安全框架,专用于系统安全编程,尤其在处理认证和授权方面表现出色。在本文中,我们将深入探讨 Acegi 的基本概念、如何设置以及它如何与 Spring 框架集成。 首先,让我们了解 Acegi 的核心...

    Acegi学习笔记--Acegi详解实战Acegi实例

    通过学习Acegi,我们可以了解到Web应用安全的基本思路和实践方法,这对于理解现代的Spring Security框架非常有帮助。虽然Acegi已经不再更新,但它的理念和架构仍对现代安全框架设计产生深远影响。

    spring acegi 学习心得

    前段时间复习了spring怎么做权限的技术,spring acegi 学习心得.记下来勉励自己.

    acegi学习

    Acegi学习是一个深入探讨Java平台上的安全性框架的主题。Acegi是Spring Framework的早期安全模块,为基于Spring的应用程序提供了强大的身份验证和授权功能。在Java世界中,安全性和权限管理是构建任何企业级应用不可...

    Acegi例子代码+一个很好的学习Acegi的网址

    这个压缩包包含了Acegi的示例代码和一个学习资源,对于初学者来说是非常宝贵的资料。 首先,让我们深入理解Acegi的核心概念: 1. **身份验证(Authentication)**:Acegi允许你实现自定义的身份验证机制,这包括...

    acegi学习指南以及例子

    在本文中,我们将深入探讨Acegi的学习指南,通过实例来理解其核心概念和功能。 首先,我们需要了解Acegi的基础概念。Acegi的核心组件包括SecurityContext、Authentication、Authorization和FilterChainProxy。...

    acegi

    Acegi 是一个在Java开发领域,特别是Spring框架中曾经广泛使用的安全组件,全称为Acegi Security。...学习Acegi可以帮助我们更好地理解Spring Security的工作原理,从而提升我们的应用安全开发能力。

    Acegi学习

    Acegi学习 Acegi是Spring Security的前身,它是一个强大且灵活的安全框架,用于Java企业级应用程序。在本文中,我们将深入探讨Acegi的核心概念、功能以及如何在实际项目中应用它。 首先,我们需要理解Acegi的核心...

    acegi pdf 学习

    由于文章内容是关于acegi pdf学习的参考文档,其中包含了大量关于Acegi安全系统的技术细节,因此以下将详细阐述文档中提及的关键知识点。 首先,Acegi安全系统是一个基于Spring框架的安全解决方案。文档开头简要...

    acegi学习笔记

    ### Acegi学习笔记详解 #### 一、Acegi Security概览 **Acegi Security**,作为Spring Security的前身,是一个深度融入Spring Framework的安全框架,它为开发者提供了一套全面的安全解决方案,尤其在Web应用程序中...

    基于java的ACEGI

    AceGI,全称为Acegi ...理解Acegi对于学习和使用Spring Security仍然大有裨益,因为它可以帮助我们更好地理解Web应用程序的安全设计和实现。在实际开发中,掌握Acegi的相关知识可以提升我们构建安全系统的专业能力。

    acegi——笔记学习

    通过深入学习Acegi,你可以了解Spring Security的基本架构和原理,这对于理解现代的Spring Security配置和使用非常有帮助。尽管Acegi已不再更新,但其思想和技术仍在Spring Security中得到沿用和发展。如果你正在...

    Acegi框架介绍 acegi安全与认证

    【Acegi框架介绍 acegi安全与认证】 Acegi Security,现称为Spring Security,是一个强大的安全框架,主要用于基于Spring的企业级应用。它通过Spring的依赖注入(IoC)和面向切面编程(AOP)功能,提供了声明式的...

    ACEGI

    Acegi Security是一个专门为Spring框架设计的权限控制框架,旨在为基于J2EE的企业级应用程序提供全面的安全服务。这个框架解决了J2EE规范中安全性配置不便于移植的问题,使得应用程序的安全设置能够在不同服务器环境...

    spring acegi 详细文档

    Spring Acegi是一个安全框架,它为Spring应用提供了一套强大的身份验证和授权机制。这个框架在Spring Security(之前称为Spring Security)之前被广泛使用。在本文中,我们将深入探讨Spring Acegi的核心概念、功能和...

    实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架

    Acegi是一个专门为SpringFramework应用提供安全机制的开放源代码项目,全称为Acegi Security System for Spring,当前版本为 0.8.3。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和...

    acegi权限控制学习笔记

    Acegi权限控制学习笔记 Acegi安全框架是Spring Security的前身,它提供了一种强大的、灵活的、基于组件的安全解决方案,用于实现企业级应用的安全控制。在这个学习笔记中,我们将探讨两个关键点:身份认证成功后的...

    Acegi使用.pdf

    - **学习曲线**:对于初次接触的开发者而言,Acegi的复杂性和灵活性可能会带来较高的学习成本。 #### 结论 Acegi安全框架凭借其独特的设计和高度的灵活性,成为了Spring框架下处理安全问题的强大工具。通过深入...

Global site tag (gtag.js) - Google Analytics