Here's one that we managed to get working, you can try similar settings to 
see if they help


cas.authn.mfa.duo[0].id=mfa-duo
cas.authn.mfa.globalPrincipalAttributePredicate=file:/etc/cas/attributeCollection/DetermineMFA.groovy
cas.authn.mfa.duo[0].rank=0
cas.authn.mfa.duo[0].duoApplicationKey=${key_duo_app}
cas.authn.mfa.duo[0].duoIntegrationKey=${key_duo_integration}
cas.authn.mfa.duo[0].duoApiHost=${duo_api_host}
cas.authn.mfa.duo[0].duoSecretKey=${key_duo}



On Tuesday, October 13, 2020 at 3:05:48 AM UTC-6 Otto Myyrä wrote:

> Sorry, realized I forgot to include version information. We are running 
> CAS 6.1.7.1.
>
> On Tuesday, October 13, 2020 at 12:02:48 PM UTC+3 Otto Myyrä wrote:
>
>> Hello.
>>
>> We are having trouble actually triggering the mfa-authentication with a 
>> groovy trigger script despite the trigger script running (and logging what 
>> it's doing) seemingly just fine.
>>
>> We authenticate from ldap and also support spnego authentication and then 
>> trigger mfa with a groovy trigger if spnego isn't in use. The groovy script 
>> runs and does what it's supposed to do and then returns what it's 
>> (apparently) supposed to return but the mfa process does not trigger after 
>> that regardless.
>>
>> If we activate mfa globally based on a principal attribute instead of a 
>> groovy trigger, then the mfa works as it should. If we try to do it with 
>> the groovy script it won't activate. Would any of you have any idea what 
>> we're doing wrong?
>>
>> Here's the mfa configuration in cas.properties:
>> ##
>> #DUO MFA provider
>> cas.authn.mfa.duo[0].duoSecretKey=[redacted]
>> cas.authn.mfa.duo[0].rank=1
>> cas.authn.mfa.duo[0].duoApplicationKey=[redacted]
>> cas.authn.mfa.duo[0].duoIntegrationKey=[redacted]
>> cas.authn.mfa.duo[0].duoApiHost=[redacted]
>> cas.authn.mfa.duo[0].trustedDeviceEnabled=false
>> cas.authn.mfa.duo[0].id=mfa-duo
>> cas.authn.mfa.duo[0].registrationUrl=https://[redacted]
>> cas.authn.mfa.duo[0].name=Login (CAS)
>> cas.authn.mfa.duo[0].order=1
>>
>> cas.authn.mfa.groovyScript=file:/etc/cas/mfaGroovyTrigger.groovy
>> cas.authn.mfa.provider-selection-enabled=true
>>
>>
>> #cas.authn.mfa.globalPrincipalAttributeNameTriggers=LGUserType,Company,CostCenter
>> #cas.authn.mfa.globalPrincipalAttributeValueRegex=23K65.*
>> #cas.authn.mfa.globalPrincipalAttributeValueRegex=donotmatch
>>
>> (the commented out lines are the tests with the principal attribute, 
>> those work)
>>
>>
>> This is the groovy trigger script:
>>
>> import java.util.*
>>
>> class MFACustomTrigger {
>>         def String run(final Object... args) {
>>                 def service = args[0]
>>                 def registeredService = args[1]
>>                 def authentication = args[2]
>>                 def httpRequest = args[3]
>>                 def logger = args[4]
>>
>>                 logger.info("Evaluating authentication attributes [{}]", 
>> authentication.attributes)
>>                 logger.info("Evaluating principal attributes [{}]", 
>> authentication.principal.attributes)
>>
>>                 def isSpnego = authentication.attributes['credentialType']
>>                 def cc = authentication.principal.attributes['costCenter']
>>
>>                 if (isSpnego.contains('SpnegoCredential')) {
>>                         logger.info("Spnego active, bypassing MFA [{}]", 
>> isSpnego)
>>                         return null
>>                 } else {
>>                         cc.each {
>>                                 if (it.matches('23K65.+')) {
>>                                         logger.info("CostCenter TIHA 
>> [{}]", cc)
>>                                         logger.info("Activating MFA for 
>> this authentication session")
>>                                         return "mfa-duo"
>>                                 } else {
>>                                         logger.info("CostCenter 
>> something else [{}]", cc)
>>                                         return null
>>                                 }
>>                         }
>>                 }
>>         }
>> }
>>
>> Good ideas, suggestions, general advice and pointers to best practices 
>> are more than welcome.
>> Thank you in advance.
>> BR,
>> Otto Myyrä
>>
>>

-- 
- 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/31b7e5a4-7a5c-45b6-ae6e-ce588d685c47n%40apereo.org.

Reply via email to