Odd Duo Exception after upgrading to 3.3.0 from 3.2.0

Christopher Bongaarts cab at umn.edu
Mon Mar 27 18:54:05 EDT 2017


There was one more adjustment required in order to make single sign-on 
work for Duo.  Had to manually add one line to the end of the 
shibboleth.AvailableAuthenticationFlows list in 
conf/authn/general-authn.xml:

   <ref bean="authn/Duo"/>

Without it, the IdPSession refused to save the authn result:

2017-03-27 16:26:57,028 - WARN 
[net.shibboleth.idp.session.impl.StorageBackedIdPSession:573] - No flow 
descriptor installed for ID authn/Duo, unable to save result to storage

I'm not sure how the rest of the authn stuff managed to work without 
this - maybe it's part of the "magic" of the initial-authn stuff, or the 
programmatic AFD registration sorta-kinda worked for some things in 3.3.0.

I'm looking forward to throwing this away and building "real" MFA flows 
with the built-in Duo support :)

On 3/16/2017 5:45 PM, Christopher Bongaarts wrote:
> So it turns out I was mistaken about this.  Duo was not actually 
> working in this case, it just allowed the IdP to load successfully.  
> Trying to invoke a Duo-protected login lead to an error, I think 
> (something like the flow couldn't be found). Ultimately after fiddling 
> with it long enough, we managed to get things working again by 
> tweaking the web.xml file and the layout of the plugin jar.
>
> This is essentially what we ended up with.  If I was planning to 
> continue using the Unicon plugin instead of the 3.3 native Duo/MFA 
> flow support, there is probably some cleanup that could be done. This 
> is mostly intended as a hint in case other folks are in the same 
> situation.
>
> - Used the stock 3.3.0 web.xml file plus our local additions, and 
> added a paths to the servlet contextConfigLocation:
>
> @@ -87,7 +87,7 @@
> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
>
>          <init-param>
> <param-name>contextConfigLocation</param-name>
> - <param-value>${idp.home}/system/conf/mvc-beans.xml, 
> ${idp.home}/system/conf/webflow-config.xml</param-value>
> + 
> <param-value>classpath*:/META-INF/net.shibboleth.idp/webflow-config.xml,${idp.home}/system/conf/mvc-beans.xml, 
> ${idp.home}/system/conf/webflow-config.xml</param-value>
>          </init-param>
>          <init-param>
> <param-name>contextClass</param-name>
>
> - Unpacked, rearranged, and repacked the shibboleth-duo-auth-1.0.1.jar 
> file:
>
> -- Moved META-INF/shibboleth-idp/conf/webflow-config.xml to 
> META-INF/net.shibboleth.idp/webflow-config.xml
> -- Moved META-INF/shibboleth-idp/conf/global.xml to 
> META-INF/net.shibboleth.idp/postconfig.xml
> -- Moved META-INF/shibboleth-idp/flows to 
> META-INF/net/shibboleth/idp/flows
> -- Removed net/unicon/iam/shibboleth/idp/authn/duo/webflow/* (this was 
> the programmatic hook for wiring in the flows that happens 
> automatically in 3.3.0 if you get the flows in the right place; having 
> it caused errors about redefining or reregistering the flows)
>
> With these changes, the plugin jar ended up with enough things in the 
> "right" place to be found, and Duo is working for us in 3.3.0.
>
> Sorry for any wild goose chasing....
>
> On 2/3/2017 4:45 PM, Cantor, Scott wrote:
>> On 2/3/17, 5:32 PM, "users on behalf of Christopher Bongaarts" 
>> <users-bounces at shibboleth.net on behalf of cab at umn.edu> wrote:
>>
>>>   The two changes we made that we effectively reverted to the 3.3.0 
>>> delivered version were the contextConfigLocation
>>> values, which we had modified as directed by the Duo module docs.  
>>> The one at the webapp level is different between
>>> (stock) 3.2.1 and (stock) 3.3.0:
>> Right, but one is a superset of the other, and their flow couldn't 
>> have been depending on the new values.
>>
>> What we changed in 3.3 was just to deprecate the original hook we 
>> provided and to formally define a pre- and post- hook that could 
>> explicitly control its interactions with our own system beans.
>>
>>> So our mucking with the values, and/or the (lack of) change to the 
>>> webapp-level parameter, apparently is enough to make
>>> the IdP unable to find certain parent flows (Mark's couldn't find 
>>> the c10n flow; in our case it couldn't find the abstract
>>> authn flow).
>> There's an explicit mechanism in 3.3 for jars to define flows to the 
>> system on the fly now, so the original cause of the problem, whatever 
>> it is, should be fixed for extension authors in the future. There 
>> really was no way to define flows without copying files into 
>> idp.home/flows/, that was simply a requirement pre-3.3.
>>
>> I know roughly what the problem was, I just don't know how the 
>> web.xml changes could have fixed it. Very weird.
>>
>> -- Scott
>>
>>
>

-- 
%%  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 users mailing list