If you turn DEBUG on for Acegi and check your log file you'll find out why its redirecting like that (it may take some analysis but it will be in there...I've had that problem before too).
-Scott -Scott Battaglia PGP Public Key Id: 0x383733AA LinkedIn: http://www.linkedin.com/in/scottbattaglia On Sat, Sep 6, 2008 at 4:21 AM, qingzhao zheng <[EMAIL PROTECTED]>wrote: > 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, > > ------------------------------ > 雅虎邮箱,您的终生邮箱! <http://cn.mail.yahoo.com/> > _______________________________________________ > Yale CAS mailing list > [email protected] > http://tp.its.yale.edu/mailman/listinfo/cas > >
_______________________________________________ Yale CAS mailing list [email protected] http://tp.its.yale.edu/mailman/listinfo/cas
