`

acegi配置

阅读更多

applicationContext-security-acegi.xml

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">  
 <beans default-lazy-init="true" default-autowire="byName">  
     <bean id="channelProcessingFilter"  
              class="org.acegisecurity.securechannel.ChannelProcessingFilter">  
            <property name="channelDecisionManager">  
                <ref local="channelDecisionManager"/>    
            </property>  
            <property name="filterInvocationDefinitionSource">  
               <value>  
                   CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON   
                   PATTERN_TYPE_APACHE_ANT   
                   /j_security_check=REQUIRES_CAPTCHA_ONCE_ABOVE_THRESOLD_REQUESTS  
               </value>  
           </property>  
       </bean>  
     
       <bean id="channelDecisionManager"  
             class="org.acegisecurity.securechannel.ChannelDecisionManagerImpl">  
           <property name="channelProcessors">    
               <list>  
                   <ref local="testOnceAfterMaxRequestsCaptchaChannelProcessor"/>  
                   <ref local="alwaysTestAfterTimeInMillisCaptchaChannelProcessor"/>  
                   <ref local="alwaysTestAfterMaxRequestsCaptchaChannelProcessor"/>  
                   <ref local="alwaysTestBelowAverageTimeInMillisBetweenRequestsChannelProcessor"/>  
               </list>  
           </property>  
       </bean>  
     
       <!-- REQUIRES_CAPTCHA_ONCE_ABOVE_THRESOLD_REQUESTS -->  
       <bean id="testOnceAfterMaxRequestsCaptchaChannelProcessor"  
             class="org.acegisecurity.captcha.TestOnceAfterMaxRequestsCaptchaChannelProcessor">  
           <property name="thresold">  
               <value>0</value>  
           </property>  
           <property name="entryPoint">  
               <ref bean="captchaEntryPoint"/>  
           </property>  
       </bean>  
     
       <!-- REQUIRES_CAPTCHA_ABOVE_THRESOLD_REQUESTS -->  
       <bean id="alwaysTestAfterMaxRequestsCaptchaChannelProcessor"  
             class="org.acegisecurity.captcha.AlwaysTestAfterMaxRequestsCaptchaChannelProcessor">  
           <property name="thresold">  
               <value>5</value>  
           </property>  
           <property name="entryPoint">  
               <ref bean="captchaEntryPoint"/>  
           </property>  
       </bean>  
     
       <!-- REQUIRES_CAPTCHA_AFTER_THRESOLD_IN_MILLIS -->  
       <bean id="alwaysTestAfterTimeInMillisCaptchaChannelProcessor"  
             class="org.acegisecurity.captcha.AlwaysTestAfterTimeInMillisCaptchaChannelProcessor">  
           <property name="thresold">  
               <value>5000</value>  
           </property>  
           <property name="entryPoint">  
               <ref bean="captchaEntryPoint"/>  
           </property>  
       </bean>  
     
       <!-- REQUIRES_CAPTCHA_BELOW_AVERAGE_TIME_IN_MILLIS_REQUESTS -->  
       <bean  
               id="alwaysTestBelowAverageTimeInMillisBetweenRequestsChannelProcessor"  
               class="org.acegisecurity.captcha.AlwaysTestBelowAverageTimeInMillisBetweenRequestsChannelProcessor">  
           <property name="thresold">  
               <value>20000</value>  
           </property>  
           <property name="entryPoint">  
               <ref bean="captchaEntryPoint"/>  
           </property>  
       </bean>  
     
       <bean id="captchaEntryPoint"  
             class="org.acegisecurity.captcha.CaptchaEntryPoint">  
           <property name="captchaFormUrl">  
               <value>/login.jsp?login_error=code_error</value>  
           </property>  
           <property name="includeOriginalRequest">  
               <value>false</value>  
           </property>  
           <property name="includeOriginalParameters">  
               <value>false</value>  
           </property>  
       </bean>  
     
       <bean id="captchaValidationProcessingFilter"  
             class="org.acegisecurity.captcha.CaptchaValidationProcessingFilter">  
           <property name="captchaService">  
               <ref bean="captchaService"/>  
           </property>  
           <property name="captchaValidationParameter" value="j_captcha_response"/>  
       </bean>  
     
       <!-- imageCaptchaService is injected into captchaImageCreateController as well as to captchaService beans -->  
       <bean id="captchaService" class="com.systop.common.security.jcaptcha.JCaptchaServiceProxyImpl">  
           <property name="jcaptchaService" ref="imageCaptchaService"/>  
       </bean>  
    
      <bean id="imageCaptchaService" class="com.octo.captcha.service.image.DefaultManageableImageCaptchaService">  
          <constructor-arg type="com.octo.captcha.service.captchastore.CaptchaStore" index="0">  
              <ref bean="fastHashMapCaptchaStore"/>  
          </constructor-arg>  
          <!-- (1) which captcha Engine you use -->  
          <constructor-arg type="com.octo.captcha.engine.CaptchaEngine" index="1">  
              <ref bean="captchaEngineEx"/>  
          </constructor-arg>  
          <constructor-arg index="2">  
              <value>180</value>  
          </constructor-arg>  
          <constructor-arg index="3">  
              <value>100000</value>  
          </constructor-arg>  
          <constructor-arg index="4">  
              <value>75000</value>  
          </constructor-arg>  
      </bean>  
    
      <bean id="fastHashMapCaptchaStore" class="com.octo.captcha.service.captchastore.FastHashMapCaptchaStore"/>  
    
      <!-- (2) you can define more than one captcha engine here -->  
      <bean id="captchaEngineEx"  
            class="com.systop.common.security.jcaptcha.engine.CaptchaEngineEx"/>  
    
  </beans>  

 

applicationContext-security-captcha.xml

     <?xml version="1.0" encoding="UTF-8"?>  
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">  
    <beans default-lazy-init="true" default-autowire="byName">  
        <!-- ======================== FILTER CHAIN ======================= -->  
      
        <!--  if you wish to use channel security, add "channelProcessingFilter," in front   
            of "httpSessionContextIntegrationFilter" in the list below -->  
        <!--   
            FilterChainProxy会按顺序来调用这些filter,使这些filter能享用Spring ioc的功能,   
           CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON定义了url比较前先转为小写   
           PATTERN_TYPE_APACHE_ANT定义了使用Apache ant的匹配模式   
           如果加入了验证码,则在logoutFilter后加入captchaValidationProcessingFilter   
           如果加入channel验证,把channelProcessingFilter加到authenticationProcessingFilter之前   
       -->  
       <bean id="filterChainProxy"  
           class="org.acegisecurity.util.FilterChainProxy">  
           <property name="filterInvocationDefinitionSource">    
               <value>  
                   CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON   
                   PATTERN_TYPE_APACHE_ANT   
                   /**=httpSessionContextIntegrationFilter,logoutFilter,captchaValidationProcessingFilter,channelProcessingFilter,authenticationProcessingFilter,basicProcessingFilter,securityContextHolderAwareRequestFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor   
               </value>  
           </property>  
       </bean>  
     
       <!-- ======================== AUTHENTICATION ======================= -->  
     
       <!--   
           通过Providers提供认证者列表,如果一个认证提供者失败可以尝试另外一个认证提供者,以保证获取不同来源的身份认证,如   
           DaoAuthenticationProvider 从数据库中读取用户信息验证身份   
           AnonymousAuthenticationProvider 匿名用户身份认证   
           RememberMeAuthenticationProvider 已存cookie中的用户信息身份认证   
              
           其它的还有   
           AuthByAdapterProvider 使用容器的适配器验证身份   
           CasAuthenticationProvider 根据Yale中心认证服务验证身份, 用于实现单点登陆   
           JaasAuthenticationProvider 从JAAS登陆配置中获取用户信息验证身份   
           RemoteAuthenticationProvider 根据远程服务验证用户身份   
           RunAsImplAuthenticationProvider 对身份已被管理器替换的用户进行验证   
           X509AuthenticationProvider 从X509认证中获取用户信息验证身份   
           TestingAuthenticationProvider 单元测试时使用   
              
           每个认证者会对自己指定的证明信息进行认证,如DaoAuthenticationProvider仅对UsernamePasswordAuthenticationToken这个证明信息进行认证。   
       -->  
       <bean id="authenticationManager"  
           class="org.acegisecurity.providers.ProviderManager">  
           <property name="providers">  
               <list>  
                   <ref local="daoAuthenticationProvider" />  
                   <ref local="anonymousAuthenticationProvider" />  
                   <ref local="rememberMeAuthenticationProvider" />  
                   <!-- testingAuthenticationProvider仅供测试环境用,正式生产平台请去除   
                       <ref local="testingAuthenticationProvider"/> -->  
               </list>  
           </property>  
           <!-- property name="sessionController">  
               <ref bean="concurrentSessionController" />  
           </property-->  
       </bean>  
     
       <!-- 可以阻止某个用户名在已经成功登录进web应用的同时再进行一次成功的登录 -->  
       <bean id="concurrentSessionController"  
           class="org.acegisecurity.concurrent.ConcurrentSessionControllerImpl">  
           <property name="maximumSessions">  
               <value>1</value>  
           </property>  
           <property name="sessionRegistry">  
               <ref local="sessionRegistry" />  
           </property>  
           <property name="exceptionIfMaximumExceeded" value="true" />  
       </bean>  
     
       <bean id="sessionRegistry"  
           class="org.acegisecurity.concurrent.SessionRegistryImpl" />  
     
       <!--   
           jdbcDaoImpl 用于在数据中获取用户信息。   
           acegi提供了用户及授权的表结构,但是您也可以自己来实现。   
       -->  
       <bean id="jdbcDaoImpl" class="com.systop.common.security.acegi.UserDetailService">  
           <property name="userManager" ref="userManager"></property>    
           <!-- property name="userCache" ref="userCache"></property-->    
       </bean>  
          
       <!-- 缓存用户和资源相对应的权限信息 -->  
       <bean id="userCache" class="org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache">  
           <property name="cache"><ref local="userCacheBackend"/></property>  
       </bean>  
         
       <bean id="userCacheBackend" class="org.springframework.cache.ehcache.EhCacheFactoryBean">  
          <property name="cacheManager">  
               <ref local="cacheManager"/>  
          </property>  
           <property name="cacheName">  
               <value>userCache</value>  
           </property>  
       </bean>  
         
       <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"/>  
        
      <!-- 使用Md5算法加密 -->  
      <bean id="passwordEncoder"  
          class="org.acegisecurity.providers.encoding.Md5PasswordEncoder" />  
    
      <!--   
          userDetailsService 定义jdbcDaoImpl从数据库获取用户信息   
          userCache ehcache缓存user信息。   
          passwordEncoder 取得密码后作加密   
      -->  
      <bean id="daoAuthenticationProvider"  
          class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">  
          <property name="userDetailsService" ref="jdbcDaoImpl" />  
          <property name="userCache" ref="userCache" />  
          <property name="passwordEncoder" ref="passwordEncoder" />  
          <property name="saltSource"><null/></property>  
      </bean>  
    
    
      <!--   
          <bean id="testingAuthenticationProvider"  
          class="org.acegisecurity.providers.TestingAuthenticationProvider"/>  
      -->  
    
      <!-- 自动接收 AuthenticationEvent 信息 -->  
      <bean id="loggerListener"  
          class="org.acegisecurity.event.authentication.LoggerListener" />  
    
      <!--  
          用于处理HTTP头的认证信息,如从Spring远程协议(如Hessian和Burlap)或普通的浏览器如IE,Navigator的HTTP头中获取用户信息  
      -->  
      <bean id="basicProcessingFilter"<

 

http://wtnhwbb.iteye.com/blog/107740

分享到:
评论

相关推荐

    Acegi配置指南[整理].pdf

    在 Acegi 配置指南中,我们主要关注如何设置和配置 Acegi 框架来保护 Web 应用程序的安全。 首先,我们需要在 `web.xml` 文件中配置 Acegi 的过滤器。在示例代码中,定义了一个名为 `Acegi Filter Chain Proxy` 的...

    ldap与Acegi? ----Acegi配置文件解剖

    本文将深入探讨如何在Acegi配置文件中集成LDAP服务,以实现高效的用户身份验证和权限管理。 **LDAP简介** LDAP是一种轻量级目录访问协议,用于存储和检索分布式目录服务中的数据。它被广泛用于存储用户账户信息、...

    Acegi配置web下载,完整

    Acegi配置.mhtAcegi配置的相关配置的信息在里面有一些

    acegi配置文件

    acegi配置文件清单

    Acegi 详细配置说明

    例如,为了配置认证管理器,我们可以创建一个`UserDetailsService`实现,然后在Acegi配置中引用它: ```xml &lt;bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager"&gt; ...

    Acegi配置指南

    在配置Acegi时,首先需要在`web.xml`文件中定义一个名为`Acegi Filter Chain Proxy`的过滤器。这个过滤器是Acegi安全机制的核心,它负责拦截所有请求并根据配置执行相应的安全策略。下面是一段典型的`web.xml`配置...

    Acegi 数据库配置安全策略 源代码及图解

    4. **XML配置转换**:在传统的Acegi配置中,安全规则通常写在XML配置文件中。这个资源可能包含了将这些静态XML配置转换为动态数据库配置的方法,这样可以更方便地根据用户角色和权限来调整安全策略。 5. **过滤器与...

    Acegi开发项目教程.pdf

    本教程附带了可运行的示例代码,这将极大地帮助读者理解和调试Acegi配置。通过实践这些示例,读者将能够更深入地理解Acegi的工作方式,以及如何根据项目需求进行定制。 总的来说,Acegi(现为Spring Security)是一...

    acegi学习整理合集

    "浅谈Acegi配置 - Spring - Java - JavaEye论坛.mht"很可能深入讨论了Acegi的配置细节,包括如何设置安全性过滤器链,配置不同的访问控制策略,以及如何处理异常情况。在Acegi中,配置是非常关键的,因为它定义了...

    acegi资料大全-全集

    `浅谈Acegi配置.mht`系列文件可能探讨了Acegi的配置过程,包括基本的配置元素如`&lt;security:global-method-security&gt;`和`&lt;security:http&gt;`,以及如何定义权限表达式和自定义过滤器。Acegi的配置是其强大之处,但也...

    Acegi(四):Acegi初体验及初解剖

    至于文件名"myOwnAcegi",可能是博主自定义的Acegi配置或示例代码。这些文件可能包含了实际的XML配置、自定义的安全类或者用于测试的简单应用代码。通过阅读这些代码,读者可以更直观地学习如何在实际项目中应用...

    acegi 权限控制按钮

    为了在Tomcat服务器上运行,你需要确保Tomcat版本与Acegi兼容,并且正确地设置了`WEB-INF/web.xml`中的Spring和Acegi配置。这通常包括定义Spring的上下文加载器监听器,以及Acegi的安全过滤器链。在部署时,只需将...

    acegi帮助资料

    开发者可以通过这份指南学习如何编写自定义的安全组件,以及如何调试和优化Acegi配置。 《Acegi-springsecurity1.0.7.pdf》可能是Spring Security的早期版本文档,因为Spring Security是从Acegi发展而来。这份文档...

    使用 Acegi 保护 Java 应用程序: 续二

    在"使用 Acegi 保护 Java 应用程序:续二"这篇博文中,作者可能详细介绍了如何集成 Acegi 安全框架到 Java 应用程序中,以及如何配置和定制其安全策略。以下是对 Acegi 安全框架及其应用的一些关键知识点的详解: 1...

    使用 Acegi 保护 Java 应用程序: 续一

    在这里,我们将更进一步,讨论如何配置和实现 Acegi 的具体功能。 首先,我们需要在项目中引入 Acegi 相关的依赖库。这通常通过 Maven 或者 Gradle 等构建工具来完成,确保添加了 Acegi 的核心库和其他必要的 ...

    Acegi将资源权限数据存储到数据库.pdf

    在传统的Acegi配置中,资源和角色的关系通常是硬编码在XML配置文件内的,例如: ```xml &lt;bean id="filterSecurityInterceptor" class="net.sf.acegisecurity.intercept.web.FilterSecurityInterceptor"&gt; ...

Global site tag (gtag.js) - Google Analytics