Hi,
   I am facing an issue with CAS in clustered environment. 

I am using CAS server version cas-server-3.4.7

I installed it on two Tomcat6  instances (same Windows PC.. but our Prod 
environment is going to be in HP UNIX) and used them under one Apache HTTP 
server 2.2.18

Used mod_jk and load balancing to share load between the two Tomcat instances.

My test scenario is like this
1. User clicks on http://webserver.tsys.tss.net/cas/login
2. Load balancer sends request to one of the tomcat instances, lets say server1
3. I see the login page in the browser
4. I bring down the Tomcat that has served the login page to me
5. Now I enter the credentials in the browser that is displaying login page and 
click submit

What I expected (or hoped) that would happen is that I can login successfully

But what happened is I saw a page which said 
------------------
CAS is Unavailable
There was an error trying to complete your request. Please notify your support 
desk or try again. 
------------------
Here I want to point out that the request did make it to the second Tomcat 
server that is running. So no issues with load balancer.

After some debugging and tracing the code, I found the following error in the 
logs. This seemed like the Key that was originally generated by the server1 for 
encoding the "LoginTicket" is different from the key that is generated by 
server2.

Should I be configuring the "flowExecutionRepository" bean in the 
cas-servlet.xml with the specific Key I want to use across all the servers?

I am also attaching the log that is generated during the failure of CAS.

Is this a necessary step for Clustering to work? Or Am I missing something. 
Please help.

2011-05-19 16:22:58,967 TRACE 
[org.springframework.web.servlet.FrameworkServlet] - Cleared thread-bound 
request context: org.apache.catalina.connector.RequestFacade@18a2977
2011-05-19 16:22:58,967 DEBUG 
[org.springframework.web.servlet.FrameworkServlet] - Could not complete request
java.lang.RuntimeException: javax.crypto.BadPaddingException: Given final block 
not properly padded
        at 
org.jasig.cas.web.flow.CasFlowExecutionKeyFactory.decrypt(CasFlowExecutionKeyFactory.java:92)
        at 
org.jasig.cas.web.flow.CasFlowExecutionKeyFactory.parseFlowExecutionKey(CasFlowExecutionKeyFactory.java:168)
        at 
org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:164)
        at 
org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
        at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
        at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
        at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
        at 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at 
org.jasig.cas.web.init.SafeDispatcherServlet.service_aroundBody2(SafeDispatcherServlet.java:115)
        at 
org.jasig.cas.web.init.SafeDispatcherServlet.service_aroundBody3$advice(SafeDispatcherServlet.java:44)
        at 
org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:1)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
com.github.inspektr.common.web.ClientInfoThreadLocalFilter.doFilter(ClientInfoThreadLocalFilter.java:63)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
        at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at 
org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:347)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776)
        at 
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705)
        at 
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:619)
Caused by: javax.crypto.BadPaddingException: Given final block not properly 
padded
        at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
        at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
        at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
        at javax.crypto.Cipher.doFinal(DashoA13*..)
        at 
org.jasig.cas.web.flow.CasFlowExecutionKeyFactory.decrypt(CasFlowExecutionKeyFactory.java:90)
        ... 37 more


Thanks In advance
Madhavi
-- 
You are currently subscribed to [email protected] as: 
[email protected]
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-dev
2011-05-19 16:22:58,842 TRACE [org.jasig.cas.web.init.SafeDispatcherServlet] - 
Entering method [service with arguments 
[[org.apache.catalina.connector.RequestFacade@18a2977, 
org.apache.catalina.connector.ResponseFacade@1a8739b]]
2011-05-19 16:22:58,889 TRACE 
[org.springframework.web.servlet.FrameworkServlet] - Bound request context to 
thread: org.apache.catalina.connector.RequestFacade@18a2977
2011-05-19 16:22:58,905 DEBUG 
[org.springframework.web.servlet.DispatcherServlet] - DispatcherServlet with 
name 'cas' processing POST request for [/cas/login]
2011-05-19 16:22:58,905 TRACE 
[org.springframework.web.servlet.DispatcherServlet] - Testing handler map 
[org.springframework.webflow.mvc.servlet.FlowHandlerMapping@14c7deb] in 
DispatcherServlet with name 'cas'
2011-05-19 16:22:58,905 DEBUG 
[org.springframework.webflow.mvc.servlet.FlowHandlerMapping] - Mapping request 
with URI '/cas/login' to flow with id 'login'
2011-05-19 16:22:58,920 TRACE 
[org.springframework.web.servlet.DispatcherServlet] - Testing handler adapter 
[org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter@dbd794]
2011-05-19 16:22:58,920 TRACE 
[org.springframework.web.servlet.DispatcherServlet] - Testing handler adapter 
[org.springframework.webflow.mvc.servlet.FlowHandlerAdapter@1264666]
2011-05-19 16:22:58,920 TRACE [org.jasig.cas.web.flow.CasDefaultFlowUrlHandler] 
- Entering method [getFlowExecutionKey with arguments 
[[org.apache.catalina.connector.RequestFacade@18a2977]]
2011-05-19 16:22:58,920 TRACE [org.jasig.cas.web.flow.CasDefaultFlowUrlHandler] 
- Leaving method [getFlowExecutionKey] with return value 
[1BD011865DA98F4FE0EA73C566B1BF89B2F2E4773A5A3FBC1033F29E345BD460E7656E22F6FDEACC3177823F301A962C].
2011-05-19 16:22:58,936 DEBUG 
[org.springframework.webflow.executor.FlowExecutorImpl] - Resuming flow 
execution with key 
'1BD011865DA98F4FE0EA73C566B1BF89B2F2E4773A5A3FBC1033F29E345BD460E7656E22F6FDEACC3177823F301A962C
2011-05-19 16:22:58,967 TRACE 
[org.jasig.cas.web.NoSuchFlowExecutionExceptionResolver] - Entering method 
[resolveException with arguments 
[[org.apache.catalina.connector.RequestFacade@18a2977, 
org.apache.catalina.connector.ResponseFacade@1a8739b, 
[FlowHandlerMapping.DefaultFlowHandler@26d560], java.lang.RuntimeException: 
javax.crypto.BadPaddingException: Given final block not properly padded]]
2011-05-19 16:22:58,967 TRACE 
[org.jasig.cas.web.NoSuchFlowExecutionExceptionResolver] - Leaving method 
[resolveException] with return value [null].
2011-05-19 16:22:58,967 TRACE 
[org.springframework.web.servlet.FrameworkServlet] - Cleared thread-bound 
request context: org.apache.catalina.connector.RequestFacade@18a2977
2011-05-19 16:22:58,967 DEBUG 
[org.springframework.web.servlet.FrameworkServlet] - Could not complete request
java.lang.RuntimeException: javax.crypto.BadPaddingException: Given final block 
not properly padded
        at 
org.jasig.cas.web.flow.CasFlowExecutionKeyFactory.decrypt(CasFlowExecutionKeyFactory.java:92)
        at 
org.jasig.cas.web.flow.CasFlowExecutionKeyFactory.parseFlowExecutionKey(CasFlowExecutionKeyFactory.java:168)
        at 
org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:164)
        at 
org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
        at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
        at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
        at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
        at 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at 
org.jasig.cas.web.init.SafeDispatcherServlet.service_aroundBody2(SafeDispatcherServlet.java:115)
        at 
org.jasig.cas.web.init.SafeDispatcherServlet.service_aroundBody3$advice(SafeDispatcherServlet.java:44)
        at 
org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:1)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
com.github.inspektr.common.web.ClientInfoThreadLocalFilter.doFilter(ClientInfoThreadLocalFilter.java:63)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
        at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at 
org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:347)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776)
        at 
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705)
        at 
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:619)
Caused by: javax.crypto.BadPaddingException: Given final block not properly 
padded
        at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
        at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
        at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
        at javax.crypto.Cipher.doFinal(DashoA13*..)
        at 
org.jasig.cas.web.flow.CasFlowExecutionKeyFactory.decrypt(CasFlowExecutionKeyFactory.java:90)
        ... 37 more
2011-05-19 16:22:58,967 TRACE 
[org.springframework.context.support.AbstractApplicationContext] - Publishing 
event in WebApplicationContext for namespace 'cas-servlet': 
ServletRequestHandledEvent: url=[/cas/login]; client=[127.0.0.1]; 
method=[POST]; servlet=[cas]; 
session=[1901F2E47F6DDA9E1E180A5D9B30119F.casserv1]; user=[null]; time=[94ms]; 
status=[failed: java.lang.RuntimeException: javax.crypto.BadPaddingException: 
Given final block not properly padded]
2011-05-19 16:22:58,967 TRACE 
[org.springframework.context.support.AbstractApplicationContext] - Publishing 
event in Root WebApplicationContext: ServletRequestHandledEvent: 
url=[/cas/login]; client=[127.0.0.1]; method=[POST]; servlet=[cas]; 
session=[1901F2E47F6DDA9E1E180A5D9B30119F.casserv1]; user=[null]; time=[94ms]; 
status=[failed: java.lang.RuntimeException: javax.crypto.BadPaddingException: 
Given final block not properly padded]
2011-05-19 16:22:58,967 TRACE [org.jasig.cas.web.init.SafeDispatcherServlet] - 
Leaving method [service] with return value [null].
2011-05-19 16:22:59,248 TRACE 
[org.jasig.cas.web.support.AbstractSingleSignOutEnabledArgumentExtractor] - 
Entering method [extractService with arguments 
[[org.apache.catalina.core.ApplicationHttpRequest@15004dd]]
2011-05-19 16:22:59,248 TRACE [org.jasig.cas.web.support.CasArgumentExtractor] 
- Entering method [extractServiceInternal with arguments 
[[org.apache.catalina.core.ApplicationHttpRequest@15004dd]]
2011-05-19 16:22:59,264 TRACE [org.jasig.cas.web.support.CasArgumentExtractor] 
- Leaving method [extractServiceInternal] with return value [null].
2011-05-19 16:22:59,264 DEBUG 
[org.jasig.cas.web.support.AbstractSingleSignOutEnabledArgumentExtractor] - 
Extractor did not generate service.
2011-05-19 16:22:59,264 TRACE 
[org.jasig.cas.web.support.AbstractSingleSignOutEnabledArgumentExtractor] - 
Leaving method [extractService] with return value [null].
2011-05-19 16:22:59,264 TRACE 
[org.jasig.cas.web.support.AbstractSingleSignOutEnabledArgumentExtractor] - 
Entering method [extractService with arguments 
[[org.apache.catalina.core.ApplicationHttpRequest@15004dd]]
2011-05-19 16:22:59,264 TRACE [org.jasig.cas.web.support.SamlArgumentExtractor] 
- Entering method [extractServiceInternal with arguments 
[[org.apache.catalina.core.ApplicationHttpRequest@15004dd]]
2011-05-19 16:22:59,280 TRACE [org.jasig.cas.web.support.SamlArgumentExtractor] 
- Leaving method [extractServiceInternal] with return value [null].
2011-05-19 16:22:59,280 DEBUG 
[org.jasig.cas.web.support.AbstractSingleSignOutEnabledArgumentExtractor] - 
Extractor did not generate service.
2011-05-19 16:22:59,280 TRACE 
[org.jasig.cas.web.support.AbstractSingleSignOutEnabledArgumentExtractor] - 
Leaving method [extractService] with return value [null].

Reply via email to