Added cas-server-core-authentication dependency. Still getting the same exception.
I do get: 2018-02-09 23:31:04,841 DEBUG [org.apereo.cas.authentication.GroovyMultifactorAuthenticationProviderBypass] - <Evaluating multifactor authentication bypass properties for principal [myusername], service [null] and provider [DefaultDuoMultifactorAuthenticationProvider] via Groovy script [URL [file:/etc/cas/selectiveDuo.groovy]]> We’ve had that working since adding the bypass.type=GROOVY and bypass.groovy.location I mentioned in the previous email. We then get: 2018-02-09 23:31:06,088 DEBUG [org.apereo.cas.authentication.AbstractMultifactorAuthenticationProvider] - <[DefaultDuoMultifactorAuthenticationProvider] voted to support this authentication request> 2018-02-09 23:31:06,089 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Finished executing org.apereo.cas.web.flow.actions.InitialAuthenticationAction@75193cbe; result = mfa-duo> 2018-02-09 23:31:06,089 DEBUG [org.springframework.webflow.execution.AnnotatedAction] - <Clearing action execution attributes map[[empty]]> 2018-02-09 23:31:06,089 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Finished executing [EvaluateAction@7171341d expression = authenticationViaFormAction, resultExpression = [null]]; result = mfa-duo> 2018-02-09 23:31:06,089 DEBUG [org.springframework.webflow.engine.Transition] - <Executing [Transition@c6fed75 on = mfa-duo, to = mfa-duo]> 2018-02-09 23:31:06,089 DEBUG [org.springframework.webflow.engine.Transition] - <Exiting state 'realSubmit'> 2018-02-09 23:31:06,089 DEBUG [org.springframework.webflow.engine.SubflowState] - <Entering state 'mfa-duo' of flow 'login'> 2018-02-09 23:31:06,089 DEBUG [org.springframework.webflow.definition.registry.FlowDefinitionRegistryImpl] - <Getting FlowDefinition with id 'mfa-duo'> 2018-02-09 23:31:06,089 DEBUG [org.springframework.webflow.engine.SubflowState] - <Calling subflow 'mfa-duo' with input map[[empty]]> 2018-02-09 23:31:06,089 DEBUG [org.springframework.webflow.engine.Flow] - <Creating [FlowVariable@328e7891 name = 'credential', valueFactory = [BeanFactoryVariableValueFactory@f584ac1 type = DuoCredential]]> 2018-02-09 23:31:06,100 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Executing [EvaluateAction@2f5ae1b2 expression = initialFlowSetupAction, resultExpression = [null]]> 2018-02-09 23:31:06,100 DEBUG [org.springframework.webflow.execution.AnnotatedAction] - <Putting action execution attributes map[[empty]]> 2018-02-09 23:31:06,100 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Executing org.apereo.cas.web.flow.InitialFlowSetupAction@89ca34b> 2018-02-09 23:31:06,101 DEBUG [org.apereo.cas.authentication.principal.WebApplicationServiceFactory] - <No service is specified in the request. Skipping service creation> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Finished executing org.apereo.cas.web.flow.InitialFlowSetupAction@89ca34b; result = success> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.execution.AnnotatedAction] - <Clearing action execution attributes map[[empty]]> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Finished executing [EvaluateAction@2f5ae1b2 expression = initialFlowSetupAction, resultExpression = [null]]; result = success> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.engine.ActionState] - <Entering state 'initializeLoginForm' of flow 'mfa-duo'> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Executing [EvaluateAction@6e514e38 expression = initializeLoginAction, resultExpression = [null]]> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.execution.AnnotatedAction] - <Putting action execution attributes map[[empty]]> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Executing org.apereo.cas.web.flow.InitializeLoginAction@43a254c6> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Finished executing org.apereo.cas.web.flow.InitializeLoginAction@43a254c6; result = success> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.execution.AnnotatedAction] - <Clearing action execution attributes map[[empty]]> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Finished executing [EvaluateAction@6e514e38 expression = initializeLoginAction, resultExpression = [null]]; result = success> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.engine.Transition] - <Executing [Transition@23121f71 on = success, to = determineDuoUserAccount]> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.engine.Transition] - <Exiting state 'initializeLoginForm'> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.engine.ActionState] - <Entering state 'determineDuoUserAccount' of flow 'mfa-duo'> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Executing [EvaluateAction@12d6ed17 expression = determineDuoUserAccountAction, resultExpression = [null]]> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.execution.AnnotatedAction] - <Putting action execution attributes map[[empty]]> 2018-02-09 23:31:06,102 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Executing org.apereo.cas.adaptors.duo.web.flow.action.DetermineDuoUserAccountAction@13bb9089> 2018-02-09 23:31:06,216 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Finished executing org.apereo.cas.adaptors.duo.web.flow.action.DetermineDuoUserAccountAction@13bb9089; result = success> 2018-02-09 23:31:06,216 DEBUG [org.springframework.webflow.execution.AnnotatedAction] - <Clearing action execution attributes map[[empty]]> 2018-02-09 23:31:06,216 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Finished executing [EvaluateAction@12d6ed17 expression = determineDuoUserAccountAction, resultExpression = [null]]; result = success> 2018-02-09 23:31:06,216 DEBUG [org.springframework.webflow.engine.Transition] - <Executing [Transition@6af9d98e on = success, to = determineDuoRequest]> 2018-02-09 23:31:06,216 DEBUG [org.springframework.webflow.engine.Transition] - <Exiting state 'determineDuoUserAccount'> 2018-02-09 23:31:06,216 DEBUG [org.springframework.webflow.engine.ActionState] - <Entering state 'determineDuoRequest' of flow 'mfa-duo'> 2018-02-09 23:31:06,216 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Executing [EvaluateAction@ebd6a67 expression = checkWebAuthenticationRequestAction, resultExpression = [null]]> 2018-02-09 23:31:06,216 DEBUG [org.springframework.webflow.execution.AnnotatedAction] - <Putting action execution attributes map[[empty]]> 2018-02-09 23:31:06,217 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Executing org.apereo.cas.web.flow.actions.CheckWebAuthenticationRequestAction@6b1440b9> 2018-02-09 23:31:06,217 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Finished executing org.apereo.cas.web.flow.actions.CheckWebAuthenticationRequestAction@6b1440b9; result = yes> 2018-02-09 23:31:06,217 DEBUG [org.springframework.webflow.execution.AnnotatedAction] - <Clearing action execution attributes map[[empty]]> 2018-02-09 23:31:06,218 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Finished executing [EvaluateAction@ebd6a67 expression = checkWebAuthenticationRequestAction, resultExpression = [null]]; result = yes> 2018-02-09 23:31:06,218 DEBUG [org.springframework.webflow.engine.Transition] - <Executing [Transition@3d670556 on = yes, to = viewLoginFormDuo]> 2018-02-09 23:31:06,218 DEBUG [org.springframework.webflow.engine.Transition] - <Exiting state 'determineDuoRequest'> 2018-02-09 23:31:06,218 DEBUG [org.springframework.webflow.engine.ViewState] - <Entering state 'viewLoginFormDuo' of flow 'mfa-duo'> 2018-02-09 23:31:06,218 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Executing [EvaluateAction@18fcf9b8 expression = prepareDuoWebLoginFormAction, resultExpression = [null]]> 2018-02-09 23:31:06,218 DEBUG [org.springframework.webflow.execution.AnnotatedAction] - <Putting action execution attributes map[[empty]]> 2018-02-09 23:31:06,218 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Executing org.apereo.cas.adaptors.duo.web.flow.action.PrepareDuoWebLoginFormAction@24e49adf> 2018-02-09 23:31:06,223 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Finished executing org.apereo.cas.adaptors.duo.web.flow.action.PrepareDuoWebLoginFormAction@24e49adf; result = success> 2018-02-09 23:31:06,223 DEBUG [org.springframework.webflow.execution.AnnotatedAction] - <Clearing action execution attributes map[[empty]]> 2018-02-09 23:31:06,224 DEBUG [org.springframework.webflow.execution.ActionExecutor] - <Finished executing [EvaluateAction@18fcf9b8 expression = prepareDuoWebLoginFormAction, resultExpression = [null]]; result = success> 2018-02-09 23:31:06,238 DEBUG [org.springframework.webflow.engine.impl.FlowExecutionImpl] - <Attempting to handle [org.springframework.webflow.execution.FlowExecutionException: Exception thrown in state 'viewLoginFormDuo' of flow 'mfa-duo'] with root cause [java.io.NotSerializableException: org.springframework.core.io.UrlResource]> 2018-02-09 23:31:06,238 DEBUG [org.springframework.webflow.engine.impl.FlowExecutionImpl] - <Rethrowing unhandled flow execution exception> 2018-02-09 23:31:06,241 ERROR [org.springframework.boot.web.support.ErrorPageFilter] - <Forwarding to error page from request [/login] due to exception [Exception thrown in state 'viewLoginFormDuo' of flow 'mfa-duo’]> Followed by the stack trace that was included earlier. > On Feb 9, 2018, at 5:19 PM, Man H <[email protected]> wrote: > > > add > <dependency> > <groupId>org.apereo.cas</groupId> > <artifactId>cas-server-core-authentication</artifactId> > <version>${cas.version}</version> > </dependency> > > with: > > cas.authn.mfa.duo[0].bypass.type=GROOVY > cas.authn.mfa.duo[0].bypass.groovy.location=file:/etc/cas/config/mfaGroovyTrigger.groovy > > you should get > > 2018-02-09 19:10:39,145 DEBUG > [org.apereo.cas.authentication.GroovyMultifactorAuthenticationProviderBypass] > - <Evaluating multifactor authentication bypass properties for principal > [casuser], service [null] and provider > [DefaultDuoMultifactorAuthenticationProvider] via Groovy script [URL > [file:/etc/cas/config/mfaGroovyTrigger.groovy]]> > > > > > > 2018-02-09 17:11 GMT-03:00 Brian Davidson <[email protected] > <mailto:[email protected]>>: > Just to add a bit to what Brian M. provided (I’m also a Brian, and a > co-worker of Brian M’s): > > We have Duo MFA working if we comment out: > cas.authn.mfa.duo[0].bypass.type=GROOVY > cas.authn.mfa.duo[0].bypass.groovy.location=file:///etc/cas/selectiveDuo.groovy > <> > > We did find that CAS was unable to check to see if the user exists in Duo if > we used the “CAS” integration in Duo. But it works if we set up the > integration as “Auth API”. > > We haven’t touched webflow. With the groovy script in place, > > When we enable GROOVY bypass script, we get: > > 2018-02-09 15:04:55,638 DEBUG > [org.springframework.webflow.engine.impl.FlowExecutionImpl] - <Attempting to > handle [org.springframework.webflow.execution.FlowExecutionException: > Exception thrown in state 'viewLoginFormDuo' of flow 'mfa-duo'] with root > cause [java.io <http://java.io/>.NotSerializableException: > org.springframework.core.io > <http://org.springframework.core.io/>.UrlResource]> > > As well as the stack trace Brian M. provided. > > cas.authn.mfa.duo[0].bypass.groovy.location was the missing piece yesterday. > Dug through source code to find that. We’re happy to provide updates to the > documentation once we get this working. > > Thanks for the help! > >> On Feb 9, 2018, at 10:14 AM, brian mancuso <[email protected] >> <mailto:[email protected]>> wrote: >> >> Anything that says "REMOVED" is just stuff I pulled out before posting it. I >> didn't want to post any private/sensitive information. >> >> On Friday, February 9, 2018 at 9:59:12 AM UTC-5, Manfredo Hopp wrote: >> What do you mean by REMOVED in properties . >> >> El viernes, 9 de febrero de 2018, brian mancuso <[email protected] <>> >> escribió: >> Hey all, >> >> I was originally trying to setup some custom triggers to determine who >> should use MFA and who is allowed to bypass. I have since been directed >> towards Groovy to simplify things, but I'm still having some trouble. >> >> At this point, the Groovy script's purpose is strictly to test if a certain >> user will bypass MFA while others will not. Here's my setup: >> >> /etc/cas/config/cas.properties >> >> ## >> # Duo security 2fa authentication provider >> # https://www.duosecurity.com/docs/duoweb#1.-generate-an-akey >> <https://www.duosecurity.com/docs/duoweb#1.-generate-an-akey> >> # >> cas.authn.mfa.duo[0].rank=0 >> cas.authn.mfa.duo[0].duoApiHost=REMOVED >> cas.authn.mfa.duo[0].duoIntegrationKey=REMOVED >> cas.authn.mfa.duo[0].duoSecretKey=REMOVED >> cas.authn.mfa.duo[0].duoApplicationKey=REMOVED >> cas.authn.mfa.duo[0].id=mfa-duo >> cas.authn.mfa.globalProviderId=mfa-duo >> cas.authn.mfa.globalFailureMode=OPEN >> cas.authn.mfa.duo[0].bypass.type=GROOVY >> cas.authn.mfa.duo[0].bypass.groovy.location=file:///etc/cas/selectiveDuo.groovy >> >> >> /etc/cas/selectiveDuo.groovy >> >> def boolean run(final Object... args) { >> def authentication = args[0] >> def principal = args[1] >> def service = args[2] >> def provider = args[3] >> def logger = args[4] >> def httpRequest = args[5] >> >> logger.info("Evaluating principal attributes ${principal.attributes}") >> >> def bypass = principal.attributes['uid'] >> if ((bypass.contains("testuser") && provider.id == "mfa-duo") { >> logger.info("Skipping bypass for principal ${principal.id >> <http://principal.id/>}") >> return false >> } >> >> return true >> } >> >> >> When I try to login though, whenever a user would be sent to DUO, I get a >> 500 error: >> >> >> <https://lh3.googleusercontent.com/-bqF7r6WYFDU/Wn2r6Zgza6I/AAAAAAAASso/CtOtDNX7IF0Y2Ua0Eb8GyWbXuYdCSbEJgCLcBGAs/s1600/Screen%2BShot%2B2018-02-09%2Bat%2B9.10.22%2BAM.png> >> >> Here's a small snippet from the output: >> >> 2018-02-09 09:04:05,717 DEBUG >> [org.apereo.cas.web.FlowExecutionExceptionResolver] - <Ignoring the received >> exception due to a type mismatch> >> org.springframework.webflow.execution.FlowExecutionException: Exception >> thrown in state 'viewLoginFormDuo' of flow 'mfa-duo' >> at >> org.springframework.webflow.engine.impl.FlowExecutionImpl.wrap(FlowExecutionImpl.java:573) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> at org.springframework.webflow.engine.impl.FlowExecutionImpl.re >> <http://gine.impl.flowexecutionimpl.re/>sume(FlowExecutionImpl.java:263) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> at >> org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:169) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> ~[?:1.8.0_151] >> >> Caused by: >> org.apereo.spring.webflow.plugin.ClientFlowExecutionRepositoryException: >> Error encoding flow execution >> at >> org.apereo.spring.webflow.plugin.ClientFlowExecutionRepository.getKey(ClientFlowExecutionRepository.java:114) >> ~[spring-webflow-client-repo-1.0.3.jar:1.0.3] >> at org.springframework.webflow.engine.impl.FlowExecutionImpl.as >> <http://gine.impl.flowexecutionimpl.as/>signKey(FlowExecutionImpl.java:419) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> at >> org.springframework.webflow.engine.impl.RequestControlContextImpl.assignFlowExecutionKey(RequestControlContextImpl.java:193) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> >> Caused by: java.io <http://java.io/>.NotSerializableException: >> org.springframework.core.io <http://org.springframework.core.io/>.UrlResource >> at >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) >> ~[?:1.8.0_151] >> at >> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) >> ~[?:1.8.0_151] >> at >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) >> ~[?:1.8.0_151] >> at >> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) >> ~[?:1.8.0_151] >> at >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) >> ~[?:1.8.0_151] >> at >> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) >> ~[?:1.8.0_151] >> at >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) >> ~[?:1.8.0_151] >> >> 2018-02-09 09:04:05,717 ERROR >> [org.springframework.boot.web.support.ErrorPageFilter] - <Forwarding to >> error page from request [/login] due to exception [Exception thrown in state >> 'viewLoginFormDuo' of flow 'mfa-duo']> >> org.springframework.webflow.execution.FlowExecutionException: Exception >> thrown in state 'viewLoginFormDuo' of flow 'mfa-duo' >> at >> org.springframework.webflow.engine.impl.FlowExecutionImpl.wrap(FlowExecutionImpl.java:573) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> at org.springframework.webflow.engine.impl.FlowExecutionImpl.re >> <http://gine.impl.flowexecutionimpl.re/>sume(FlowExecutionImpl.java:263) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> at >> org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:169) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> ~[?:1.8.0_151] >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >> ~[?:1.8.0_151] >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >> ~[?:1.8.0_151] >> at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_151] >> >> Caused by: >> org.apereo.spring.webflow.plugin.ClientFlowExecutionRepositoryException: >> Error encoding flow execution >> at >> org.apereo.spring.webflow.plugin.ClientFlowExecutionRepository.getKey(ClientFlowExecutionRepository.java:114) >> ~[spring-webflow-client-repo-1.0.3.jar:1.0.3] >> at org.springframework.webflow.engine.impl.FlowExecutionImpl.as >> <http://gine.impl.flowexecutionimpl.as/>signKey(FlowExecutionImpl.java:419) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> at >> org.springframework.webflow.engine.impl.RequestControlContextImpl.assignFlowExecutionKey(RequestControlContextImpl.java:193) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> at >> org.springframework.webflow.engine.ViewState.doEnter(ViewState.java:170) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> at org.springframework.webflow.engine.State.enter(State.java:194) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> at >> org.springframework.webflow.engine.Transition.execute(Transition.java:228) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> at >> org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:395) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> at >> org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl.java:214) >> ~[spring-webflow-2.4.6.RELEASE.jar:2.4.6.RELEASE] >> >> Caused by: java.io <http://java.io/>.NotSerializableException: >> org.springframework.core.io <http://org.springframework.core.io/>.UrlResource >> at >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) >> ~[?:1.8.0_151] >> at >> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) >> ~[?:1.8.0_151] >> at >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) >> ~[?:1.8.0_151] >> at >> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) >> ~[?:1.8.0_151] >> at >> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) >> ~[?:1.8.0_151] >> at >> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) >> ~[?:1.8.0_151] >> at >> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) >> ~[?:1.8.0_151] >> at >> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) >> ~[?:1.8.0_151] >> >> >> I posted the output to pastebin since it was too large for just posting >> here: https://pastebin.com/yNPk4u7n <https://pastebin.com/yNPk4u7n> >> >> -- >> - Website: https://apereo.github.io/cas <https://apereo.github.io/cas> >> - Gitter Chatroom: https://gitter.im/apereo/cas >> <https://gitter.im/apereo/cas> >> - List Guidelines: https://goo.gl/1VRrw7 <https://goo.gl/1VRrw7> >> - Contributions: https://goo.gl/mh7qDG <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/b3ba67e2-e0ca-4a8e-853b-041343564b9f%40apereo.org >> >> <https://groups.google.com/a/apereo.org/d/msgid/cas-user/b3ba67e2-e0ca-4a8e-853b-041343564b9f%40apereo.org?utm_medium=email&utm_source=footer>. >> >> -- >> - Website: https://apereo.github.io/cas <https://apereo.github.io/cas> >> - Gitter Chatroom: https://gitter.im/apereo/cas >> <https://gitter.im/apereo/cas> >> - List Guidelines: https://goo.gl/1VRrw7 <https://goo.gl/1VRrw7> >> - Contributions: https://goo.gl/mh7qDG <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] >> <mailto:[email protected]>. >> To view this discussion on the web visit >> https://groups.google.com/a/apereo.org/d/msgid/cas-user/651df904-b94c-4d3b-9915-ddfd969c5924%40apereo.org >> >> <https://groups.google.com/a/apereo.org/d/msgid/cas-user/651df904-b94c-4d3b-9915-ddfd969c5924%40apereo.org?utm_medium=email&utm_source=footer>. > > > -- > - Website: https://apereo.github.io/cas <https://apereo.github.io/cas> > - Gitter Chatroom: https://gitter.im/apereo/cas <https://gitter.im/apereo/cas> > - List Guidelines: https://goo.gl/1VRrw7 <https://goo.gl/1VRrw7> > - Contributions: https://goo.gl/mh7qDG <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] > <mailto:[email protected]>. > To view this discussion on the web visit > https://groups.google.com/a/apereo.org/d/msgid/cas-user/2A0C53A0-2FFF-4F1E-AAAE-B9647B352CB5%40gmail.com > > <https://groups.google.com/a/apereo.org/d/msgid/cas-user/2A0C53A0-2FFF-4F1E-AAAE-B9647B352CB5%40gmail.com?utm_medium=email&utm_source=footer>. > > > -- > - Website: https://apereo.github.io/cas <https://apereo.github.io/cas> > - Gitter Chatroom: https://gitter.im/apereo/cas <https://gitter.im/apereo/cas> > - List Guidelines: https://goo.gl/1VRrw7 <https://goo.gl/1VRrw7> > - Contributions: https://goo.gl/mh7qDG <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] > <mailto:[email protected]>. > To view this discussion on the web visit > https://groups.google.com/a/apereo.org/d/msgid/cas-user/CAMY5midKW9nbuUSutNPX5%2BKbmKPfaGnMRfjmVosqwBESC9KNgw%40mail.gmail.com > > <https://groups.google.com/a/apereo.org/d/msgid/cas-user/CAMY5midKW9nbuUSutNPX5%2BKbmKPfaGnMRfjmVosqwBESC9KNgw%40mail.gmail.com?utm_medium=email&utm_source=footer>. -- - 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/202B509D-37BC-4296-A312-F0D1F87DFDEC%40gmail.com.
