Different inactivityTimeout in a MFA environment

Francesco Malvezzi francesco.malvezzi at unimore.it
Wed Jan 29 09:00:38 UTC 2025



[...]
> 
> No direct or simple way. It's possible to implement a custom reuseCondition that can attach to the MFA flow and dig into what the embedded results were and enforce a custom timeout programmatically.

upon exploring this path, I realized I don't know where the information 
about the subflows is.

Starting my search from: 
https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199511904/Authentication#Authentication--and-Session-Related-Context-Tree, 
I peered into the:
AuthenticationContext 
AuthenticationContext{initiationInstant=2025-01-29T08:06:33.951247347Z, 
isPassive=false, forceAuthn=false, requiredName=null, hintedName=*, 
maxAge=null, potentialFlows=[authn/MFA], activeResults=[authn/MFA], 
attemptedFlow=null, signaledFlowId=null, authenticationStateMap={}, 
resultCacheable=true, authenticationResult=null, completionInstant=null}
and the:
IdPSession 
StorageBackedIdPSession{sessionId=625b2ce57dd4a3cff7e2b71f0ec0f3ea8ae8194dd889abce358a0d54a7117e21, 
principalName=malvezzi, IPv4=151.41.173.100, IPv6=null, Unk=null, 
creationInstant=2025-01-29T08:06:22.612Z, 
lastActivityInstant=2025-01-29T08:06:33.955195127Z, 
authenticationResults=[AuthenticationResult{authenticationFlowId=authn/MFA, 
authenticatedPrincipal=*, 
authenticationInstant=2025-01-29T08:06:21.798Z, 
lastActivityInstant=2025-01-29T08:06:22.602Z, previousResult=true}]

in the former there are promising properties like:
activeResults 
{authn/MFA=AuthenticationResult{authenticationFlowId=authn/MFA, 
authenticatedPrincipal=*, 
authenticationInstant=2025-01-29T08:06:21.798Z, 
lastActivityInstant=2025-01-29T08:06:22.602Z, previousResult=true}}
or
intermediateFlows (this a dead end, because it is about the current auth 
flow, while I'm looking for details of previous ones).

However, I didn't find yet the subflows' information of the previous 
activeResults and not ever its authnContextClass, which let me thinking 
I am looking in the wrong place.

The next step I would like to understand is the "enforce a custom 
timeout programmatically". First of all: wouldn't be enough just 
returning true of false as the reuseCondition is a predicate (where 
false means: do not reuse the SSO)? If not: to which object should I set 
the property inactivityTimeout?

thank you for the patience,

Francesco


More information about the users mailing list