Baron, We have been setting mfa in the service definition; some services are mandatory, others optional. Users can opt to enrol in duo in another internal application (where they can update other personal data, etc).
I have experimented with (but not used in prod): # Specify the regular expression pattern to trigger multifactor when working with a single provider. # Comment out the setting when working with multiple multifactor providers # cas.authn.mfa.global-principal-attribute-value-regex=urn:mace:uvic.ca:university:duo_user # Activate MFA globally based on authentication metadata attributes # cas.authn.mfa.global-authentication-attribute-name-triggers=eduPersonEntitlement # cas.authn.mfa.global-authentication-attribute-value-regex=urn:mace:uvic.ca:university:duo_user Using the older style duo mfa [from within cas],the attributes are as you listed. When our user does not go through mfa, these attributes are set as: successfulAuthenticationHandlers: [LdapAuthenticationHandler] credentialType: [UsernamePasswordCredential] authenticationMethod: [LdapAuthenticationHandler] no authContextClass With the newer universal prompt, these attributes exist: duoAuthCtxTxId 176187f6-63c6-453f-9e1a-43b1b50dd961 duoAuthResultStatus allow duoAuthCtxApplicationName Web SDK Universal prompt duoAuthCtxReason remembered_device (user_approved on first login) authnContextClass mfa-duo duoAuthCtxAccessDeviceIp xxx.xxx.xxx.xxx duoAuthCtxResult success duoAud DI... duoAuthCtxAccessDeviceLocationCity Victoria duoAuthCtxFactor remembered_device (duo_push on first login) duoAuthCtxTimestamp 1659132374 duoAuthCtxAccessDeviceLocationState British Columbia duoIss https://api-....duosecurity.com/oauth/v1/token bypassMultifactorAuthentication false successfulAuthenticationHandlers DuoSecurityAuthenticationHandler duoSub rbon duoAuthCtxAccessDeviceLocationCountry Canada duoAuthCtxUserKey DU... credentialType DuoSecurityUniversalPromptCredential authenticationMethod DuoSecurityAuthenticationHandler duoIat 1.659132375E9 domain uvic.ca duoPreferredUsername rbon duoExp 1659135974 duoAuthTime 1659132374 duoAuthCtxEventType authentication duoAuthResult allow So lots to choose from. Ray On Fri, 2022-07-29 at 09:44 -1000, Baron Fujimoto wrote: Notice: This message was sent from outside the University of Victoria email system. Please be cautious with links and sensitive information. We're currently using CAS 6.5 with Duo for MFA. While the MFA itself works, we're trying to find some way of determining whether MFA was actually used during a user's authentication. MFA is not mandatory for our users, and they must opt-in and enroll themselves with Duo. We can see that when a user authenticates, there is a set of promising CAS authentication attributes available. e.g.: - successfulAuthenticationHandlers: [DuoSecurityAuthenticationHandler] - credentialType: [DuoSecurityCredential] - authenticationMethod: [DuoSecurityAuthenticationHandler] - authnContextClass: [mfa-duo] However, these attributes appear to be assigned the same values whether the user is enrolled in Duo or not – and thus are presented with the MFA requirement during their login. Therefore, there doesn't appear to be anything in these attributes that allows us to distinguish whether MFA was actually invoked/required/used for the user's authentication. FWIW, this is how we're currently enabling MFA for CAS in cas.properties: cas.authn.mfa.triggers.global.global-provider-id=mfa-duo We've looked at the available multifactor authentication triggers, but none of the attribute-based triggers seem appropriate since I think they rely on local information about the principal, and not something authoritative from Duo or about the actual CAS authentication flow that was used. Perhaps there's a way using the REST method with the Duo Auth API /enroll_status or /preauth endpoints, but that sounds kind of fraught (even if possible). Is there something else we may be overlooking that would help us achieve our goal? -- Baron Fujimoto <ba...@hawaii.edu<mailto:ba...@hawaii.edu>> ::: UH Information Technology Services minutas cantorum, minutas balorum, minutas carboratum descendus pantorum -- Ray Bon Programmer Analyst Development Services, University Systems 2507218831 | CLE 019 | r...@uvic.ca<mailto:r...@uvic.ca> I acknowledge and respect the lək̓ʷəŋən peoples on whose traditional territory the university stands, and the Songhees, Esquimalt and WSÁNEĆ peoples whose historical relationships with the land continue to this day. -- - 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/fa61398525e085242274d1fb4a45c8e9ceb6c8fa.camel%40uvic.ca.