We've tested the Universal Prompt and Interrupt in v 6.5.2 without issues.

-ds
Dave Steiner, Rutgers University


On Tuesday, January 3, 2023 at 10:41:58 PM UTC-5 j-gar...@onu.edu wrote:

> For anyone else who finds this in the future:
> It looks like this bug has been corrected by version 6.6.3. I am unsure 
> the actual version number that fixed the bug. I successfully authenticate 
> via ldap, then duo universal, then hit the webflow interrupt now.
>
> On Thursday, August 12, 2021 at 3:06:18 PM UTC-4 Jeremiah Garmatter wrote:
>
>> Hello,
>>
>> I have an issue with the Groovy-based interrupt and DUO Universal prompt.
>>
>> The interrupt works fine on CAS 6.3.4 on Tomcat 9.0.46 with the regular 
>> DUO integration. I log in, authenticate with DUO, see the interrupt and can 
>> continue to my service without issues. 
>>
>> The problem comes out when I activate DUO Universal prompt. I comment out 
>> the *cas.authn.mfa.duo[0].duo-application-key* CAS property and turn on 
>> the universal prompt from DUO's admin site, then restart tomcat. After the 
>> CAS app is running, I log in, get redirected to the DUO Universal prompt, 
>> authenticate with 2nd factor, and once I am redirected back to CAS I get 
>> the below error in both cas log and the web browser.
>>
>> Out of curiosity, I rebuilt CAS without the 
>> *cas-server-support-interrupt-webflow* implementation and I could log in 
>> without issues using the DUO universal prompt. Has anyone come across this 
>> before or have advice on correcting the issue? I'd like to keep the 
>> interrupt functionality and utilize the new DUO prompt if possible.
>>
>> Here is the error:
>> org.springframework.webflow.execution.ActionExecutionException: Exception 
>> thrown executing 
>> org.apereo.cas.interrupt.webflow.actions.InquireInterruptAction@1069be8a in 
>> state 'inquireInterruptAction' of flow 'login' -- action execution 
>> attributes were 'map[[empty]]' at 
>> org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:62)
>>  
>> at 
>> org.springframework.webflow.action.EvaluateAction.doExecute(EvaluateAction.java:77)
>>  
>> at 
>> org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188)
>>  
>> at 
>> org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)
>>  
>> at 
>> org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:101) 
>> at org.springframework.webflow.engine.State.enter(State.java:194) at 
>> org.springframework.webflow.engine.Transition.execute(Transition.java:228) 
>> at 
>> org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:395)
>>  
>> at 
>> org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl.java:214)
>>  
>> at 
>> org.springframework.webflow.engine.TransitionableState.handleEvent(TransitionableState.java:116)
>>  
>> at org.springframework.webflow.engine.Flow.handleEvent(Flow.java:547) at 
>> org.springframework.webflow.engine.impl.FlowExecutionImpl.handleEvent(FlowExecutionImpl.java:390)
>>  
>> at 
>> org.springframework.webflow.engine.impl.RequestControlContextImpl.handleEvent(RequestControlContextImpl.java:210)
>>  
>> at 
>> org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:105) 
>> at org.springframework.webflow.engine.State.enter(State.java:194) at 
>> org.springframework.webflow.engine.Flow.start(Flow.java:527) at 
>> org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:368)
>>  
>> at 
>> org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:223)
>>  
>> at 
>> org.springframework.webflow.executor.FlowExecutorImpl.launchExecution(FlowExecutorImpl.java:139)
>>  
>> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
>> Method) at 
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>  
>> at 
>> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>  
>> at java.base/java.lang.reflect.Method.invoke(Method.java:566) at 
>> org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:282)
>>  
>> at 
>> org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:499)
>>  
>> at 
>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
>>  
>> at 
>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
>>  
>> at com.sun.proxy.$Proxy277.launchExecution(Unknown Source) at 
>> org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:264)
>>  
>> at 
>> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
>>  
>> at 
>> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
>>  
>> at 
>> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
>>  
>> at 
>> org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
>>  
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) at 
>> org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
>>  
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at 
>> org.apereo.cas.web.support.AuthenticationCredentialsThreadLocalBinderClearingFilter.doFilter(AuthenticationCredentialsThreadLocalBinderClearingFilter.java:28)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at 
>> org.apereo.cas.web.support.filters.RequestParameterPolicyEnforcementFilter.doFilter(RequestParameterPolicyEnforcementFilter.java:401)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at 
>> org.apereo.cas.web.support.filters.ResponseHeadersEnforcementFilter.doFilter(ResponseHeadersEnforcementFilter.java:200)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at 
>> org.apereo.cas.web.support.filters.AddResponseHeadersFilter.doFilter(AddResponseHeadersFilter.java:64)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at 
>> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:204)
>>  
>> at 
>> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)
>>  
>> at 
>> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
>>  
>> at 
>> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at 
>> org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
>>  
>> at 
>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at 
>> org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
>>  
>> at 
>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at 
>> org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)
>>  
>> at 
>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at 
>> org.apereo.cas.logging.web.ThreadContextMDCServletFilter.doFilter(ThreadContextMDCServletFilter.java:99)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at 
>> org.apereo.inspektr.common.web.ClientInfoThreadLocalFilter.doFilter(ClientInfoThreadLocalFilter.java:66)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at 
>> org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:126)
>>  
>> at 
>> org.springframework.boot.web.servlet.support.ErrorPageFilter.access$000(ErrorPageFilter.java:64)
>>  
>> at 
>> org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:101)
>>  
>> at 
>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
>>  
>> at 
>> org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:119)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at 
>> org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
>>  
>> at 
>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at 
>> org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
>>  
>> at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
>>  
>> at 
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
>>  
>> at 
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
>>  
>> at 
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
>>  
>> at 
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
>>  
>> at 
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) 
>> at 
>> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
>>  
>> at 
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
>>  
>> at 
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) 
>> at 
>> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) 
>> at 
>> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
>>  
>> at 
>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
>>  
>> at 
>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)
>>  
>> at 
>> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
>>  
>> at 
>> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>>  
>> at 
>> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>>  
>> at 
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>>  
>> at java.base/java.lang.Thread.run(Thread.java:834) Caused by: 
>> java.lang.NullPointerException at 
>> org.apereo.cas.interrupt.webflow.actions.InquireInterruptAction.doExecute(InquireInterruptAction.java:42)
>>  
>> at 
>> org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188)
>>  
>> at jdk.internal.reflect.GeneratedMethodAccessor195.invoke(Unknown Source) 
>> at 
>> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>  
>> at java.base/java.lang.reflect.Method.invoke(Method.java:566) at 
>> org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:282)
>>  
>> at 
>> org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:499)
>>  
>> at 
>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
>>  
>> at 
>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
>>  
>> at com.sun.proxy.$Proxy157.execute(Unknown Source) at 
>> org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)
>>  
>> ... 107 more 
>>
>>

-- 
- Website: https://apereo.github.io/cas
- Gitter Chatroom: https://gitter.im/apereo/cas
- List Guidelines: https://goo.gl/1VRrw7
- Contributions: https://goo.gl/mh7qDG
--- 
You received this message because you are subscribed to the Google Groups "CAS 
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to cas-user+unsubscr...@apereo.org.
To view this discussion on the web visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/b02b4d09-c987-4f87-b904-e17de53f26a5n%40apereo.org.

Reply via email to