IDP 3.3 MFA flow -- working example
Joe Edwards
joee at uw.edu
Mon Dec 12 19:02:38 EST 2016
On Mon, 12 Dec 2016, Cantor, Scott wrote:
>> Then, we used the same logic used in that flow to include
>> optional RSA and yubikey 2 factor authentication,
>> based on user based or SP criteria.
>> The RSA flow includes handling of NEW_PIN_REQUIRED
>> and NEXT_CODE_REQUIRED.
> .....snip
>
> I'd be a little curious how you managed that RSA part,
> I never saw any way to handle those modes with the Java SDK
> from RSA. It looked like it would take holding connections to
> SecurID open across web requests, which is a non-starter to me.
After password authentication....
We use a com.rsa.authagent.authapi.AuthSession.
<evaluate
expression="our.package.shibboleth.auth.rsaSession.getRsaSession()"
result="flowScope.rsaAuthSession" />
The rsa session is then passed to our rsaAuth class:
//check the passcode entered
authStatus = session.check(userId, passcode);
which deals with the result:
switch (authStatus) {
case AuthSession.ACCESS_OK:
case AuthSession.NEW_PIN_REQUIRED:
case AuthSession.NEXT_CODE_REQUIRED:
the user sees the appropriate page:
<transition on="ACCESS_OK" to="cleanup" />
<transition on="ERROR" to="RsaErrTwoFactorPage" />
<transition on="NEW_PIN" to="RsaNewPinPage" />
<transition on="NEXT_CODE" to="RsaNextTokenPage" />
The rsa session enables the user to submit the NEXT_CODE.
authStatus = session.next(nextcode);
case AuthSession.ACCESS_OK
case AuthSession.ACCESS_DENIED
case AuthSession.NEXT_CODE_BAD
- Joe
More information about the users
mailing list