Just a heads up from something I recently became aware of that impacted older versions of dotnetopenid.<div><br></div><div>The HTTP protocol defines a Content-Location HTTP response header that allows the web server to suggest to the client that another URL would be equivalent to the one that client actually pulled from.  It is<i> not</i> a redirect, but merely a suggestion that two URLs are equivalent.  For the purposes of OpenID claimed identifier discovery, it is imperative that an OpenID RP <i>ignore</i> this header, lest a web server upon which discovery was performed can spoof an arbitrary claimed_id&#39;s identity by fooling the RP into thinking it discovered an identifier that in fact it did not.</div>
<div><br></div><div>In particular, .NET&#39;s &quot;helpful&quot; HTTP stack automatically reads this header and reports it to the client as if it was in fact that actual URL that was pulled from even though it wasn&#39;t.  Since .NET follows redirects automatically by default, a legitimate redirect and this Content-Location header are indiscernable, which is really bad.  This is fixed in the dotnetopenid and dotnetopenauth libraries.</div>
<div><br></div><div>Other RP library/site authors should verify that the HTTP stack they are using ignore this header, or workaround the issue.  </div><div><br></div><div>I&#39;ve set up a test on <a href="http://test-id.org">test-id.org</a> where an RP can very quickly assess whether they are vulnerable.  Please take a moment to find out, and fix it ASAP if you are.</div>
<div><a href="http://test-id.org/RP/IgnoresContentLocationHeader.aspx">http://test-id.org/RP/IgnoresContentLocationHeader.aspx</a></div><div><br clear="all">--<br>Andrew Arnott<br>&quot;I [may] not agree with what you have to say, but I&#39;ll defend to the death your right to say it.&quot; - S. G. Tallentyre<br>

</div>