Requested/Supported Principals

Cantor, Scott cantor.2 at osu.edu
Wed May 13 10:31:54 EDT 2015


On 5/13/15, 1:47 PM, "Marvin Addison" <marvin.addison at gmail.com> wrote:



>I'm really struggling to meet all requirements for our assurance 
>implementation with a single X509 flow. The root problem is that we have 
>two different certificate types handled by the one flow, but the 
>assurance characteristics differ between the two types. Thus we need to 
>be able to signal silver or bronze as a function of subject/credential 
>instead of the flow/component. I can imagine this would be a common 
>requirement for assurance use cases where the assurance levels are driven 
>by data of the authenticated subject. For example, some institutions 
>store the assurance level as a directory attribute.

I intended for that to work, but I made a mistake handling the subject 
coming back and tried to automate a different set of cases and that broke 
the ability to limit the Principal collection programatically. Basically I 
wanted to avoid the need for writing code in the majority of cases, and in 
the process made it impossible with those flows to actually rely on 
writing code.

There's nothing architecturally limited about it, the problem is in the 
AbstractValidationAction base class and the way Subjects coming back are 
manipulated by it and by the subclasses. The subclasses are just 
implementation so I can change them, but the base class is causing 
problems too, and it's API, so I have to come up with an addition to the 
API to help fix it.

>It feels like there should be some first-class consideration for driving 
>the requested/supported principal machinery from the subject. Based on 
>initial analysis I can imagine a well-defined post-authentication hook to 
>set arbitrary principals (e.g. AuthnContextClassRefPrincipal)
> on the authenticated subject, which would be checked in a subsequent 
>flow action as candidates for setting 
>RequestedPrincipalContext#setMatchingPrincipal().

Breaking it apart is an option, but I don't know that it's feasible 
without breaking APIs at this point, so I'm looking for a less invasive 
change, probably some kind of flag to control whether to add to the 
Principal collection. That already is there, but it wasn't expressed 
correctly and I have to back out what I did and come up with a set of 
options that allow it to work better.

-- Scott



More information about the dev mailing list