Login diversions

Christopher Bongaarts cab at umn.edu
Fri Nov 4 17:08:30 GMT 2011


In the process of converting our IDM infrastructure from our existing 
web SSO service to Shibboleth, we have a couple places where our 
existing workflow isn't fully supportable with the Shib IdP.  I suspect 
these scenarios might be more generally applicable, and if so there may 
be ways that IdP 3 could be structured to work with them.  (Or maybe 
there are better ways to achieve the same functionality...)

When a user forgets their password, we prompt them to answer of set of 
questions whose answers they previously shared with us.  Upon answering 
correctly, they are then prompted to enter a new password.  At this 
point, they should be considered SSO-authenticated and not have to 
reenter their password to log in to other sites.

The catch is, the password changing service is moving to Shibboleth 
authentication.

Our current strategy: we reuse our existing SSO cookie to indicate that 
the questions were answered correctly, and the user is then considered 
fully authenticated by our custom IdP LoginHandler.  Then,  we look at 
the SP that is requesting authentication.  If it is the password 
changing application SP, then the authentication succeeds and the user 
can proceed with the password change.  If not, they are shown an error 
page.  We're punting on "forcing" the user to change password 
immediately - if they choose not to, then they will have to go through 
the hassle of answering the shared-secret questions again on their next 
login.

The main problem remaining in this case is that the user gets dead-ended 
after changing their password, because the login context from the 
original SP's authen request would be lost in the process of getting 
logged in to the password changing SP.

To me this seems like one aspect of a more general case: of 
authentication requests being interrupted or diverted, requiring the 
user to authenticate to another SP to perform some action before the 
original authentication can be continued.

One way to support this would be to have a "stack" of login contexts. 
When you divert someone to a second SP, the new login context doesn't 
overwrite/replace the first one, but is added to it.  You might need to 
have some signaling in the protocol to indicate to the SP that when it 
is "finished", it should send the user back to a designated endpoint on 
the IdP so that they can complete the previous authen request and get 
back to the original requesting SP.

I'm also interested in alternative ways to handle this, as long as it's 
not "build your password changing app into the IdP". ;)
-- 
%%  Christopher A. Bongaarts   %%  cab at umn.edu          %%
%%  OIT - Identity Management  %%  http://umn.edu/~cab  %%
%%  University of Minnesota    %%  +1 (612) 625-1809    %%


More information about the dev mailing list