I have a problem about acegi cyclical redirection.When I visit my application 
it redirect to CAS server .the firefox report it have cyclical redirection.And 
in the cas.log file .I can see that it repeatly grant the servic tickets. my 
application work all right just with the cas client code not using acegi.So I 
think it must be something wrong with the acegi configuration.could anyone 
point out to me?
  the configuration is below:
  <!-- ======================== FILTER CHAIN ======================= -->
 
 <bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
      <property name="filterInvocationDefinitionSource">
         <value>
      CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
      PATTERN_TYPE_APACHE_ANT
            
/**=channelProcessingFilter,httpSessionContextIntegrationFilter,logoutFilter,casProcessingFilter,basicProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
         </value>
      </property>
    </bean>
   
    <!-- ======================== AUTHENTICATION ======================= -->
 
  <bean id="authenticationManager" 
class="org.acegisecurity.providers.ProviderManager">
   <property name="providers">
    <list>
     <ref bean="casAuthenticationProvider"/>
    </list>
   </property>
  </bean>
 
 <!--  <bean id="jdbcDaoImpl" 
class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl"> --> 
 
     <bean id="jdbcDaoImpl" 
class="edu.zju.tcmmanager.sso.security.SecurityJdbcDaoImpl">
             <property name="dataSource" ref="dataSource"/>
             <property name="usersByUsernameQuery">
        <value>
         SELECT username,password FROM t_staff WHERE username=?
            </value>
         </property>
            <property name="authoritiesByUsernameQuery">
        <value>            
        SELECT username, role FROM t_staff , t_role , r_staff_role 
         WHERE t_staff.staffid = r_staff_role.staffid   and t_role.roleid = 
r_staff_role.roleid
                     and t_staff.username = ?
        </value>
       </property>
            
    </bean>
     
 <!-- 
  <bean id="inMemoryDaoImpl" 
class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">
   <property name="userMap">
     <value>
     admin=admin,ROLE_USER
     
     </value>
   </property>
 </bean> 
 
    
     -->
 
   <bean id="basicProcessingFilter" 
class="org.acegisecurity.ui.basicauth.BasicProcessingFilter">
      <property name="authenticationManager"><ref 
local="authenticationManager"/></property>
      <property name="authenticationEntryPoint"><ref 
local="basicProcessingFilterEntryPoint"/></property>
   </bean>
   
   <bean id="basicProcessingFilterEntryPoint" 
class="org.acegisecurity.ui.basicauth.BasicProcessingFilterEntryPoint">
      <property name="realmName"><value>Test Realm</value></property>
   </bean>
   
    <bean id="httpSessionContextIntegrationFilter" 
class="org.acegisecurity.context.HttpSessionContextIntegrationFilter"/>
    
    <bean id="casAuthenticationProvider" 
class="org.acegisecurity.providers.cas.CasAuthenticationProvider">
  <property name="ticketValidator"> <ref bean="casProxyTicketValidator"/> 
</property>
  <property name="casProxyDecider"><ref bean="casProxyDecider"/></property>
  <property name="statelessTicketCache"><ref 
bean="statelessTicketCache"/></property>
  <property name="casAuthoritiesPopulator"><ref 
bean="casAuthoritiesPopulator"/></property>
  <property name="key"><value>my_password_for_this_auth_provider_only</value> 
</property>
 </bean>
 
 <bean id="casProxyTicketValidator" 
class="org.acegisecurity.providers.cas.ticketvalidator.CasProxyTicketValidator">
    <property 
name="casValidate"><value>https://qing:8443/cas/proxyValidate</value></property>
    
  
 <!-- <property 
name="proxyCallbackUrl"><value>https://qing:8443/TCMManager/casPorxy/receptor</value></property>
   -->
    <property 
name="trustStore"><value>C:\jre1.5.0_07\lib\security\cacerts</value></property> 
 
    <property name="serviceProperties"><ref bean="serviceProperties"/>   
</property>
  </bean>
  
    <bean id="cacheManager" 
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
   <property name="configLocation">
    <value>classpath:/ehcache-failsafe.xml</value>
   </property>
  </bean>
  
    <bean id="ticketCacheBackend" 
class="org.springframework.cache.ehcache.EhCacheFactoryBean">
    <property name="cacheManager"><ref local="cacheManager"/></property>
    <property name="cacheName"><value>ticketCache</value></property>
   </bean>
 
 <bean id="statelessTicketCache" 
class="org.acegisecurity.providers.cas.cache.EhCacheBasedTicketCache">
  <property name="cache"><ref local="ticketCacheBackend"/></property>
 </bean>
 
 
 
 <bean id="casAuthoritiesPopulator" 
class="org.acegisecurity.providers.cas.populator.DaoCasAuthoritiesPopulator">
 
  <!--<property name="userDetailsService"><ref 
local="inMemoryDaoImpl"/></property> -->
   <property name="userDetailsService"><ref local="jdbcDaoImpl"/></property> 
   
  
 </bean>
 
 <bean id="casProxyDecider" 
class="org.acegisecurity.providers.cas.proxy.RejectProxyTickets"/>
 
 
  <bean id="serviceProperties" 
class="org.acegisecurity.ui.cas.ServiceProperties">
  <property name="service">
   <value>https://qing:8443/TCMManager/j_acegi_cas_security_check</value>
  </property>
  <property name="sendRenew"><value>false</value></property>
  
 </bean>
 
 <!-- note logout has little impact, due to CAS reauthentication functionality 
(it will cause a refresh of the authentication though) -->
 
 
   <bean id="logoutFilter" class="org.acegisecurity.ui.logout.LogoutFilter">
      <constructor-arg value="/index.jsp"/> <!-- URL redirected to after logout 
-->
     <constructor-arg>
         <list>
              <bean 
class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler"/>
         </list>
      </constructor-arg>
   </bean>
   
    
 <!-- ===================== HTTP CHANNEL REQUIREMENTS ==================== -->
   <!-- Enabled by default for CAS, as a CAS deployment uses HTTPS -->
 
   
  <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
    \A/j_acegi_cas_security_check.*\Z=REQUIRES_SECURE_CHANNEL    
   </value>
  </property>
 </bean>
   <bean id="channelDecisionManager" 
class="org.acegisecurity.securechannel.ChannelDecisionManagerImpl">
     <property name="channelProcessors">
        <list>
           <ref local="secureChannelProcessor"/>
          <ref local="insecureChannelProcessor"/>
       </list>
     </property>
 </bean>
   <bean id="secureChannelProcessor" 
class="org.acegisecurity.securechannel.SecureChannelProcessor"/>
 <bean id="insecureChannelProcessor" 
class="org.acegisecurity.securechannel.InsecureChannelProcessor"/>
 
 
  <!-- ===================== HTTP REQUEST SECURITY ==================== -->
 
 
 
  <bean id="exceptionTranslationFilter" 
class="org.acegisecurity.ui.ExceptionTranslationFilter">
    <property name="authenticationEntryPoint"><ref 
local="casProcessingFilterEntryPoint"/></property>
  </bean>
 <bean id="casProcessingFilterEntryPoint" 
class="org.acegisecurity.ui.cas.CasProcessingFilterEntryPoint">
    <property name="loginUrl"> <value>https://qing:8443/cas/login</value>   
</property>
    <property name="serviceProperties">   <ref bean="serviceProperties"/>   
</property>
  </bean>
 
 <bean id="casProcessingFilter" 
class="org.acegisecurity.ui.cas.CasProcessingFilter">
  <property 
name="filterProcessesUrl"><value>/j_acegi_cas_security_check</value></property>
  <property name="authenticationManager"><ref 
bean="authenticationManager"/></property>
  <property name= "authenticationFailureUrl"> 
<value>/casfailed.jsp</value></property>
  <property name="defaultTargetUrl"><value>/</value></property>
 </bean>
 
   
   
    <bean id="httpRequestAccessDecisionManager" 
class="org.acegisecurity.vote.AffirmativeBased">
     <property name="allowIfAllAbstainDecisions"><value>false</value></property>
  <property name="decisionVoters">
    <list>
    <bean class="org.acegisecurity.vote.RoleVoter" />
   </list>
  </property>
 </bean>
 
 <!-- Note the order that entries are placed against the objectDefinitionSource 
is critical.
      The FilterSecurityInterceptor will work from the top of the list down to 
the FIRST pattern that matches the request URL.
      Accordingly, you should place MOST SPECIFIC (ie a/b/c/d.*) expressions 
first, with LEAST SPECIFIC (ie a/.*) expressions last -->
      <bean id="filterInvocationInterceptor" 
class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">
     <property name="authenticationManager"><ref 
local="authenticationManager"/></property>
     <property name="accessDecisionManager"><ref 
local="httpRequestAccessDecisionManager"/></property>
   <property name="objectDefinitionSource">
  <value>
   CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
   PATTERN_TYPE_APACHE_ANT
      /**=ROLE_USERS
     </value>
  </property>
 </bean> 
 and  in the web.xml is:
  <filter>
        <filter-name>Acegi Filter Chain Proxy</filter-name>
        <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
        <init-param>
            <param-name>targetClass</param-name>
            <param-value>org.acegisecurity.util.FilterChainProxy</param-value>
        </init-param>
   </filter>
      <filter-mapping>
      <filter-name>Acegi Filter Chain Proxy</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>
                                                                                
qingzhao,

       
---------------------------------
 雅虎邮箱,您的终生邮箱!
_______________________________________________
Yale CAS mailing list
[email protected]
http://tp.its.yale.edu/mailman/listinfo/cas

Reply via email to