Hello,

I am implementing *Per Application – Multifactor Authentication Triggers* 
in CAS 7.1.5 using Google Authenticator (mfa-gauth) with MongoDB token 
storage.

The module used is:
implementation "org.apereo.cas:cas-server-support-gauth-mongo" 

Google Authenticator configuration in cas.properties (issuer, label, crypto 
keys, mongo, etc.) is correctly set up. The flow works properly when using 
*Global 
Multifactor Authentication Trigger*.
------------------------------
Per Application configuration 

The registered service contains:
"multifactorPolicy" : { "@class" : 
"org.apereo.cas.services.DefaultRegisteredServiceMultifactorPolicy", 
"multifactorAuthenticationProviders" : [ "mfa-gauth" ], "bypassEnabled" : 
false, "forceExecution" : true } 
------------------------------
Problem 

When using *Per Application MFA Trigger*:

   - 
   
   If the user already has a registered TOTP token → MFA works correctly.
   - 
   
   If the user does NOT have a registered device → CAS grants login 
   directly.
   - 
   
   The Google Authenticator registration flow (QR page) is NOT triggered.
   - 
   
   Logs only show SERVICE_TICKET_CREATED.
   
However, when configuring *Global Multifactor Authentication Trigger*, the 
behavior is correct:

   - 
   
   If the user has no registered device → CAS redirects automatically to 
   the QR registration flow.
   - 
   
   MFA is properly enforced.
   
------------------------------
Expected behavior 

I would expect Per Application MFA to behave the same way:

   - 
   
   Trigger device registration flow when no device exists.
   - 
   
   Prevent service ticket issuance until MFA registration is completed.
   
------------------------------
Question 

Is this the expected behavior of Per Application MFA in CAS 7.1.5?
Is there any additional property or configuration required to force device 
registration when MFA is defined at the service level?

Here are my cas.properties settings:
cas.authn.mfa.gauth.id=mfa-gauth
cas.authn.mfa.gauth.core.issuer=CAS
cas.authn.mfa.gauth.core.label=Junta de Andalucía
cas.authn.mfa.gauth.crypto.encryption.key
=6t1qRsYDqCtFIgrpOzfQLMOMOpxgRICaOX0VV3fBT1aoK4BLuLrPU8fIsmFv0UhcwrWhHSWnCu5tbhJX3YzRbg
cas.authn.mfa.gauth.crypto.signing.key
=hBjeTTDTkKVr4uHB9og_M0GPQ01TcmywTRTE4fFWr0fdt87S3y6VyI76PG4ZqIQaVA1BKn3CFwq1cyGtuKYm2Q

cas.authn.mfa.gauth.mongo.client-uri= #MY MONGODB#
cas.authn.mfa.gauth.mongo.token-collection=gauth_tokens

Thank you.

-- 
- Website: https://apereo.github.io/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 visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/6f3e9218-7862-4a23-b31a-32da7a089eb4n%40apereo.org.

Reply via email to