MFA result reuse with Duo.
Scott Koranda
skoranda at gmail.com
Wed Jan 18 18:42:41 EST 2017
> > So what it does is check each requested Principal in
> > sequence, and determine if it can be satisfied. If not, it
> > looks for a flow to run that supports it. So I think it will
> > run the MFA flow (which will support both/all of course) in
> > such cases before it sees the second Principal and decides
> > to reuse the old result.
>
> So yes, the MFA flow is running and yes, the script logic in
> my "next flow strategy" script is executing, but I see
>
> java.lang.RuntimeException: javax.script.ScriptException:
> TypeError: null has no such function "getPrincipalName" in
> <eval> at line number 59
>
> for this line in the script
>
> username = input.getSubcontext("net.shibboleth.idp.authn.context.SubjectCanonicalizationContext").getPrincipalName();
>
> So presumably the SubjectCanonicalizationContext is not
> available for some reason?
>
> Can I walk the context tree and find another context from
> which to pull the principal tree? (I assume yes...)
(Apologies for replying to my own thread...)
Yes, by using the active result(s) from the
MultiFactorAuthenticationContext I can get the username, query
for attributes, and have the next flow strategy script logic
determine whether or not to invoke authn/Duo.
So it appears that yes, with
idp.authn.favorSSO = false
AND
<property name="defaultAuthenticationMethods">
<list>
<ref bean="MfaPrincipal" />
<ref bean="PasswordPrincipal" />
</list>
</property>
one can effectively control in the MFA next flow strategy
script logic whether or not the IdP re-uses an active password
result.
Scott K
More information about the users
mailing list