RE: [saml-dev] preserving query parameters in AssertionConsumerServiceURL

From
Schmidlin, Franck <>
Date
2009-04-08T08:03:33+00:00
ID
Thread
RE: [saml-dev] preserving query parameters in AssertionConsumerServiceURL
Scott, apologies for the delayed 
follow-up, it's one of those weeks...

Thanks for your response, but I 
still need convincing of what can or cannot be done with 
AssertionConsumerServiceURL.

> I can't speak for what the standard 
intended, but I think this is bad practice and our implementation wouldn't allow 
it.

Why would this be bad practice? Do you mean that nobody else does, or 
is there something inherently bad about having a variable query string in the 
AssertionConsumerServiceURL?

Saml-core-2.0-os line 2061 reads: "AssertionConsumerServiceURL [Optional] Specifies by value the 
location to which the <Response> 
message MUST be returned to the 
requester."

As far as I understand RFC3986, 
query parameters are part or a URL, they are not separate from it. So If my 
AssertionConsumerURL contains a query string, the responder MUST respond to that 
URL, including the query string.

> We do direct comparisons against the 
metadata, so using a query string that would vary would break 
it.

I think my service provider 
does the same (applying a level of authentication to the 
AssertionConsumerServiceURL to make sure it matches a predefined list).
This 
is consistent with the standard. Saml-core-2.0-os line 2063 reads: " The 
responder MUST ensure by some means that the value specified is in fact 
associated with the requester. [SAMLMeta] provides one possible mechanism; 
signing the enclosing <AuthnRequest> 
message is another."

However, this should not affect 
the format of AssertionConsumerServiceURL. 
The responder should compare the incoming value against its metadata, but 
using a smarter mechanism than a simple string comparison.
Once the incoming 
URL has been confirmed as associated with the requester, the responder should 
respond to the full AssertionConsumerServiceURL, and NOT to the URL held in 
metadata.

I realise I am tilting 
at windmills, but if there is a valid operational reason as to why we can't have 
a variable query string in our AssertionConsumerServiceURL I really would like 
to know it.

> I think you should be 
putting that information into RelayState.

Looking at saml-bindings-2.0-os, yes, you 
are right, RelayState has the advantage of being explicitly described as doing 
what we need it to do:

"If a SAML 
request message is accompanied by RelayState data, then the SAML responder MUST 
return its SAML protocol response using a binding that also supports a 
RelayState mechanism, and it MUST place the exact data it received with the 
request into the corresponding RelayState parameter in the 
response."

I'll check with our Service Provider if they 
actually support that feature.
Checking the trace I have I think they use 
Tivoli FIM

Btw, they've 
apparently told my colleagues to use the ID/InResponseTo attributes to recover 
our SessionID, but that feels like a fudge to me.

Thanks for 
your help

______________________________
Franck Schmidlin
Transformation Technical Consultant - 
Integration
Technical Architect - Northgate Hub 

Northgate Public Services

Please consider the environment before printing this e-mail

-----Original Message-----
From: Scott Cantor [mailto:]
Sent: 03 April 
2009 18:12
To: Schmidlin, Franck; 
Subject: 
RE: [saml-dev] preserving query parameters in 
AssertionConsumerServiceURL

> However, the decoded SAMLResponse is 
sent to
> /ufs/user/framedResponse.jsp?app=ABC without the necessary 
esessionid
> parameter.

The URL you sent had some kind of embedded 
ampersand URL-encoded into it, it probably tripped a bug in some 
fashion.

> I am trying to argue with the Assertion providers that this 
violates
> the SAML standard, but I have failed to back this up with 
appropriate
> references.
>
> Could you help me argue my point 
that the AssertionConsumerServiceURL
value
> should be used as it by 
the assertion provider, without modification?

I can't speak for what the 
standard intended, but I think this is bad practice and our implementation 
wouldn't allow it. We do direct comparisons against the metadata, so using a 
query string that would vary would break it.

I think you should be 
putting that information into RelayState.

-- 
Scott

------------------------------------------------------------------------------------
The 
Northgate IS Content Screening and Inspection system has scanned this message 
for malicious and inappropriate content and none was found. Please take care 
when opening attachments even when these are expected and from known and trusted 
sources.
------------------------------------------------------------------------------------

------------------------------------------------------------------------------------
The 
Northgate IS Content Screening and Inspection system has scanned this message 
for malicious and inappropriate content and none was found. Please take care 
when opening attachments even when these are expected and from known and trusted 
sources.
------------------------------------------------------------------------------------

  

This email is sent on behalf of 
Northgate Information Solutions Limited and its associated companies 
("Northgate") and is strictly confidential and intended solely for the 
addressee(s).  

 If you are not the intended recipient 
of this email you must: (i) not disclose, copy or distribute its contents to any 
other person nor use its contents in any way or you may be acting 
unlawfully;  (ii) contact Northgate immediately on +44 (0)1442 232424 
quoting the name of the sender and the addressee then delete it from your 
system.

 Northgate has taken reasonable 
precautions to ensure that no viruses are contained in this email, but does not 
accept any responsibility once this email has been transmitted.  You should 
scan attachments (if any) for viruses.

 Northgate Information Solutions 
Limited. Registered in England no. 06442582  - 
 Northgate Information Solutions UK Limited. Registered in 
England no. 968498  - 
 NorthgateArinso UK Limited. Registered in England 
no. 1587537  -  Moorepay Limited.  Registered in 
England no. 891686  - 
 Northgate Land & Property Solutions Limited  -  Registered 
in England no. 2149536 
Registered Office: Peoplebuilding 2, Peoplebuilding Estate, Maylands Avenue, 
Hemel Hempstead, Hertfordshire HP2 4NW 

 Northgate Managed Services Limited 
(NI).  Registered in Northern Ireland no. NI032979  
-  LearnServe Limited (NI).  Registered in Northern Ireland 
no. NI043825 Registered 
Office: Hillview House, 61 Church Road, Newtownabbey, Co. Antrim, BT36 
7LQ