I thought that if the SP requested a specific authnContextClassRef, the IdP
had to respond with that same value, or respond with an error if unable to
fulfill.
Terry Fleury
tfl...@illinois.edu
--
To unsubscribe from this list send an email to users-un...@shibboleth.net
In other words, when the IdP is configured with the following in handler.xml:
<ph:LoginHandler xsi:type="ph:UsernamePassword"
jaasConfigurationLocation="file:///opt/shibboleth-idp/conf/login.config">
<ph:AuthenticationMethod>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</ph:AuthenticationMethod>
<ph:AuthenticationMethod>http://id.incommon.org/assurance/bronze-test</ph:AuthenticationMethod>
<ph:AuthenticationMethod>http://id.incommon.org/assurance/silver-test</ph:AuthenticationMethod>
</ph:LoginHandler>
It returns
"urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" in
response to
authnContextClassRef="urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified".
If I reorder the configuration in handler.xml as follows:
<ph:LoginHandler xsi:type="ph:UsernamePassword"
jaasConfigurationLocation="file:///opt/shibboleth-idp/conf/login.config">
<ph:AuthenticationMethod>http://id.incommon.org/assurance/silver-test</ph:AuthenticationMethod>
<ph:AuthenticationMethod>http://id.incommon.org/assurance/bronze-test</ph:AuthenticationMethod>
<ph:AuthenticationMethod>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</ph:AuthenticationMethod>
</ph:LoginHandler>
The IdP returns "http://id.incommon.org/assurance/silver-test" in response
to authnContextClassRef="urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified".
So semantically, requesting "unspecified" means "give me the first
configured authn".
Does this mean sending
authnContextClassRef="urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified" to
the IdP is the same as not sending authnContextClassRef at all?
Terry Fleury
tfl...@illinois.edu
Chad, can you provide a reference, please? Section 3.3.2.2.1 of SAML
Core suggests otherwise.
Tom
You mean all by itself? I'm not sure why you'd do that...what semantic
are you trying to convey?
Tom
At this point, I'm just trying to understand how the
authnContextClassRef thing works. I doubt I would ever pass just
"unspecified" by itself. I really want to say "give me silver, bronze,
or anything else you can give me", in that order. Not sure how to
accomplish that.
In my brief amount of testing, it seems to me like if I request any of
silver, bronze, or PasswordProtectedTransport by themselves, the IdP
will respond with that if it is configured as such. "unspecified" gave
me the first configured method.
Terry Fleury
tfl...@illinois.edu
--
Chad La Joie
www.itumi.biz
trusted identities, delivered
I read the documentation. You said:
"unspecified" means "any that you (the relying party) choose"
and I'm asking you how you arrived at that conclusion? There's nothing
in the spec that I can find that comes close to that.
Tom
Okay, I understand.
> I
> really want to say "give me silver, bronze, or anything else you can give
> me", in that order. Not sure how to accomplish that.
Right, I don't know how to do that either. Listing everything but the
kitchen sink doesn't seem right, but I don't have a better suggestion,
sorry.
AuthnContext sucks.
Tom
However, I noticed that the "now" value is terminated with a line feed
character (ascii char 10) as shown in
"Fri%20Jan%2027%2016%3A48%3A07%202012%0A". I have to strip this
character off in my code. None of the other values have this extra line
feed at the end. Is this intentional? If so, why?
No, it's not intentional.
-- Scott
The NameIDPolicy language is a better indicator of the logical intent behind an unspecified constant in a request. The only reason unspecified was defined as a context class was to address the requirement to have at least a class in every statement. It's the "null" indicator, and should work like the null indicator does in other areas.
Also happens to be a much better result, since it means you don't have to configure the IdP to explicitly handle it ahead of time.
I would hope that including it on the end of a list of other classes with exact matching would favor one of the others and then fall into picking one at random if that doesn't work. That's pretty much the best possible result for such a use case.