RE: [security-services] NameID and the use of SPProvidedID

From
Thomas Wisniewski <>
Date
2006-06-22T13:27:59+00:00
ID
Thread
RE: [security-services] NameID and the use of SPProvidedID
Title: Message

Greg, 
Scott, Conor, I'm going through this one again, and I want to bring up the issue 
again -- I don't agree with your interpretation of the current 
specs.

 

 

When I 
read the Core specs (2433-2438 and 2490-2492 -- quoted below), it seems obvious 
that the spec forces the SP, once it sets the SPProvidedID, to set this 
value in all subsequent messages to the IDP. This is a MUST requirement for the 
SP.

 

The 
main stmt being line 2490-2492

"In any case, the 
<saml:NameID> content in the request and its asociated SPProvidedID 
attribute MUST contain the most recent name identifier information established 
between the providers for the principal."

I do believe my 
interpretation of the specs is the correct one. Otherwise what is the purpose of 
the above statement? If you don't agree, please advise how you interpret the 
above statement.

 

Having said that, 
the actual intent (potential for errata) can be argued as 
well.

If we say that 
the SP can arbitrarily include the new SPProvidedID or omit it, what stops us 
from saying that once the IDP changes its identifier using a <NewID> MNI 
call, it too does *not* have to include that value. If this is the case, then 
all things can bread down if the SP decided to "remove" (use a blank) its value 
as now the IDP would not have to send anything to the SP 
...

It just seems 
wrong that we have defined a pair-wise identifier, and the SP can arbitrarily 
send its identifier (so it only needs to send one value in the 
pair) to the IDP while the IDP must send the pairwise identifier. If the SP 
wants to set the SPProvidedID, then it should be held to that identifier in 
future calls to the IDP (just as when the IDP changes its identifier, 
it is held to sending its identifier in calls to the SP). 

Tom.

 

  

  
-----Original Message-----
From: Thomas 
  Wisniewski [mailto:] 
Sent: Friday, 
  June 09, 2006 11:17 AM
To: 'SSTC WG'
Subject: 
  [security-services] NameID and the use of SPProvidedID

  
All, there is 
  some contention around the interpretation of SamlCore lines 2433 - 2438 and 
  2490 - 2492.

  

  
"The new identifier 
  value (in plaintext or encrypted form) to be used when communicating with the 
  requesting provider concerning this principal, or an indication that the use of the old identifier 
  has been terminated. In the former 
  case, if the requester is the service provider, the new identifier MUST appear 
  in subsequent <NameID> elements in the SPProvidedID attribute. If the 
  requester is the  identity 
  provider, the new value will appear in subsequent <NameID> elements as the element's 
  content."

  
...

  
"In any case, the 
  <saml:NameID> content in the request and its asociated SPProvidedID 
  attribute MUST contain the most recent name identifier information established 
  between the providers for the principal."

  
This has to do with setting the 
  persistent NameID value using the NewID option of an MNI 
  request.

  
Assume original 
  NameID is as follows: 

  
<NameID 
  NameQualifier="idp" SPNameQualifier="sp" 
  Format="...persistent">abcd</NameID>

  
Assume that an SP sets 
  their SPProvidedID to "1234". It is clear that 
  the IDP, upon accepting the new value MUST send any references to this NameID 
  such that the SPProvidedID is specified to "1234"

  
So an IDP would 
  send

  
<NameID 
  NameQualifier="idp" SPNameQualifier="sp" Format="...persistent" 
  SPProvidedID="1234">abcd</NameID>

  
Now 
  consider 
  if the SP needs to intiate an request (e.g., Single Logout). I would content 
  that the SP MUST send the following as well:

  
<NameID 
  NameQualifier="idp" SPNameQualifier="sp" Format="...persistent" 
  SPProvidedID="1234">abcd</NameID>

  
Another interpretation is that the SP is allowed to 
  continue to send:

  
<NameID 
  NameQualifier="idp" SPNameQualifier="sp" 
  Format="...persistent">abcd</NameID>

  
I.e., it never needs to send the value it set in 
  its MNI request that 
  with NewID="1234".

  
Tom.

  
Thomas Wisniewski
Software Architect 
Phone: (201) 
  891-0524 
Cell: (201) 248-3668 
  
  
EntrustÒ 
Securing Digital Identities
& Information