Let me suggest to get the Groovy script out of equation
completely. Switch this groovy bypass off, and try to perform entire duo 2
factor authentication transaction. If it completes successfully and then you
again enable groovy bypass and then after it you get the failures that you are
seeing, then the problem indeed is somewhere in that bypass facility.
Cheers,D.
On Sat, Feb 10, 2018 at 11:29 AM -0500, "Brian Davidson" <awk.br...@gmail.com>
wrote:
Switching the function to return a String instead of a boolean, I get:
2018-02-10 11:25:06,033 ERROR [org.apereo.cas.util.ScriptingUtils] - <Result
[mfa-duo is of type class java.lang.String when we were expecting class
java.lang.Boolean>java.lang.ClassCastException: Result [mfa-duo is of type
class java.lang.String when we were expecting class java.lang.Boolean
…
2018-02-10 11:25:06,952 ERROR
[org.apereo.cas.authentication.GroovyMultifactorAuthenticationProviderBypass] -
<null>java.lang.NullPointerException: null at
org.apereo.cas.authentication.GroovyMultifactorAuthenticationProviderBypass.shouldMultifactorAuthenticationProviderExecute(GroovyMultifactorAuthenticationProviderBypass.java:40)
~[cas-server-core-authentication-mfa-5.2.2-SNAPSHOT.jar:5.2.2-SNAPSHOT]
…
On Feb 10, 2018, at 10:14 AM, Man H <info.ings...@gmail.com> wrote:
Try returning string "mfa-duo" or null
El sábado, 10 de febrero de 2018, Brian Davidson <awk.br...@gmail.com> escribió:
I changed it from info to warn:
2018-02-10 08:54:07,061 WARN
[org.apereo.cas.authentication.GroovyMultifactorAuthenticationProviderBypass] -
<Evaluating principal attributes [businessCategory:[Employee, Staff], cn:Brian
Davidson, ctCalDefaultNoteReminder:0:0, ctCalDefaultReminder:0:10,
ctCalDefaultTaskReminder:0:0, ctCalDisplayPrefs:4:480:1080:1:30:190:2,
ctCalLanguageId:0, ctCalNotifMechanism:1,
ctCalOperatingPrefs:0:255:0:0:0:0:0:1440:0:1440:0:0:1440:0:1440:0:0:1440:0:1440:0:0:1440:0:1440:0:0:1440:0:1440:0:0:1440:0:1440:0:0:1440:0:1440,
ctCalPasswordRequired:1, ctCalPublishedType:0, ctCalRefreshPrefs:1:60,
ctCalSMSTimeRange:0:0, ctCalSysopCanWritePassword:0, ctCalTimezone:0,
ctCalXItemId:10101:02238, eduPersonAffiliation:[member, staff], gecos:Brian
Davidson, gidNumber:5137, givenName:Brian, gmuBannerGUID:REDACTED,
gmuemployeestatus:C, gmugnumber:REDACTED, gmuMLPwdChanged:20170127190453Z,
gmurup:true, gmusecurityquiz:1487691778, homeDirectory:REDACTED,
iplanet-am-modifiable-by:cn=Top-level Admin Role,o=gmu.edu,
l:opted-in-201103021755, loginShell:/bin/bash, mail:REDACTED,
mailAllowedServiceAccess:-imap,pop,http,smtp:*, mailAlternateAddress:REDACTED,
mailDeliveryOption:mailbox, mailHost:gmuedu.onmicrosoft.com,
mailQuota:1048576000, mailRoutingAddress:REDACTED, nsmsgDisallowAccess:imap pop
http smtp, nswmExtendedUserPrefs:[meTrashFolder=Trash, meSentFolder=Sent,
meDraftFolder=Drafts, meInitialized=true], objectClass:[posixAccount,
sunUCPreferences, mailrecipient, iplanetPreferences, inetLocalMailRecipient,
iplanet-am-managed-person, inetOrgPerson, inetAdmin, ctCalUser, inetMailUser,
iplanet-am-user-service, gmuPerson, shadowAccount, userPresenceProfile,
inetUser, top, person, organizationalPerson, ipuser, eduPerson, account],
ou=people,o=gmu.edu,o=pab, sn:Davidson, uid:REDACTED, uidNumber:888,
userPassword:REDACTED]>
On Feb 10, 2018, at 8:43 AM, Man H <info.ings...@gmail.com> wrote:
Could you try this
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}")
return true}
El sábado, 10 de febrero de 2018, Brian Davidson <awk.br...@gmail.com> escribió:
Removed that dependency and still git the same 500 error and same stack trace.
On Feb 10, 2018, at 7:20 AM, Man H <info.ings...@gmail.com> wrote:
Why you hace this
<dependency> <groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId> <version>2.5</version>
<type>jar</type> </dependency>
El sábado, 10 de febrero de 2018, Brian Davidson <awk.br...@gmail.com> escribió:
Running on apache-tomcat-8.5.24, so that should be servlet v3.1.x.
Yes, this is CAS version 5.2.2.
CAS w/ Duo works with no bypass groovy script in place. CAS works with bypass
groovy script that returns false. We’re just getting the exception when the
groovy script returns true.
Thanks again for all the help!
External
A CAS deployment may be deployed to any number of external servlet containers.
The container MUST support the servlet specification v3.1.x at a minimum.On Feb
10, 2018, at 6:37 AM, Man H <info.ings...@gmail.com> wrote:
Assuming you are on 5.2.2
El sábado, 10 de febrero de 2018, Brian Davidson <awk.br...@gmail.com> escribió:
I meant to add, our pom.xml has the following dependencies (in case we’re
missing something):
<dependencies> <dependency> <groupId>org.apereo.cas</groupId>
<artifactId>cas-server-webapp-${app.server}</artifactId>
<version>${cas.version}</version> <type>war</type>
<scope>runtime</scope> </dependency> <dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-ldap</artifactId>
<version>${cas.version}</version> </dependency> <dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-saml</artifactId>
<version>${cas.version}</version> </dependency> <dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-hazelcast-ticket-registry</artifactId>
<version>${cas.version}</version> </dependency> <dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-duo</artifactId>
<version>${cas.version}</version> </dependency> <dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-json-service-registry</artifactId>
<version>${cas.version}</version> </dependency> <dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId> <version>3.17.1-GA</version>
</dependency> <dependency> <groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version> <type>jar</type> </dependency>
<dependency> <groupId>org.apereo.cas</groupId>
<artifactId>cas-server-core-webflow</artifactId>
<version>${cas.version}</version> </dependency> <dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-core-web</artifactId>
<version>${cas.version}</version> <type>jar</type>
</dependency> <dependency> <groupId>org.apereo.cas</groupId>
<artifactId>cas-server-core-configuration</artifactId>
<version>${cas.version}</version> <type>jar</type>
</dependency> <dependency> <groupId>org.apereo.cas</groupId>
<artifactId>cas-server-core-authentication</artifactId>
<version>${cas.version}</version> </dependency> </dependencies>
On Feb 9, 2018, at 5:19 PM, Man H <info.ings...@gmail.com> 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 <awk.br...@gmail.com>:
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=GROOVYcas.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.NotSerializableException: 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 <snidd...@gmail.com> 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 <snid...@gmail.com> 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
#
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}")
return false
}
return true
}
When I try to login though, whenever a user would be sent to DUO, I get a 500
error:
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.resume(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.assignKey(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.NotSerializableException:
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.resume(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.assignKey(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.NotSerializableException:
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
--
- 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+u...@apereo.org.
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.
--
- 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/651df904-b94c-4d3b-9915-ddfd969c5924%40apereo.org.
--
- 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/2A0C53A0-2FFF-4F1E-AAAE-B9647B352CB5%40gmail.com.
--
- 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/CAMY5midKW9nbuUSutNPX5%2BKbmKPfaGnMRfjmVosqwBESC9KNgw%40mail.gmail.com.
--
- 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/4B953717-A37E-4E87-AD49-2BF69A7124C1%40gmail.com.
--
- 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/CAMY5mifAJL3Wiq%2Bh8HdAbUGB0SEaARNZH--s5wcJ_%3DamQtER9w%40mail.gmail.com.
--
- 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/726B28A6-E38E-425D-8ECD-5A6040905A48%40gmail.com.
--
- 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/CAMY5mieAUtjrCY1UgJwF%3DBUDy_2%2B%2BMntboaea4EkH6sWQnZ6rA%40mail.gmail.com.
--
- 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/F3240192-8B43-4275-92A4-44EFFCCEFCC1%40gmail.com.
--
- 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/CAMY5midbkPD7vFCpoQRb90zKLROcc4RQQe01uiA_3GCXo5TnWg%40mail.gmail.com.
--
- 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/2B4CEB0E-10CF-46AA-8D9B-A04FCA5CA2BE%40gmail.com.
--
- 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/CAMY5mifvs%3D_2OmiV2Prjw4KOThdsN1vS2CCN0Zk2FYgc5RjHZQ%40mail.gmail.com.
--
- 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/42968FBF-4E13-4EC6-B374-A3739F6FACAD%40gmail.com.
--
- 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/20C889EBD5E2E103.605F6678-9158-45B0-8E5F-A4C9A2DAA4C0%40mail.outlook.com.