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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/c58ed513-f9c3-4a8d-b77a-ed5cd748b15bn%40apereo.org.

Reply via email to