Okay.&nbsp; Can we re-word it then so it&#39;s more explicitly stated?&nbsp; I.E.:<br><br>Attempt discovery.<br>If discovery succeeds, ensure return_to URL is specified in the XRDS document.&nbsp; If not present, always return negative assertion.
<br>If discovery fails, assume return_to URL is valid and return assertion.<br><br>Thanks!<br><br>John Ehn<br><a href="http://extremeswank.com">extremeswank.com</a><br><br><div><span class="gmail_quote">On 10/29/07, <b class="gmail_sendername">
James Henstridge</b> &lt;<a href="mailto:james@jamesh.id.au">james@jamesh.id.au</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On 29/10/2007, John Ehn &lt;<a href="mailto:john@extremeswank.com">john@extremeswank.com</a>&gt; wrote:<br>&gt; I&#39;ve been reviewing Draft 12, and noticed this section, which I think will<br>&gt; cause problems for some systems.
<br>&gt;<br>&gt;<br>&gt; 9.2.1.&nbsp;&nbsp;Using the Realm for Return URL Verification<br>&gt;<br>&gt; OpenID providers SHOULD verify that the return_to URL specified in the<br>&gt; request is an OpenID relying party endpoint. To verify a return_to URL,
<br>&gt; obtain the relying party endpoints for the realm by performing discovery on<br>&gt; the relying party (Discovering OpenID Relying Parties). As always when<br>&gt; performing discovery, the discovered URL is the URL of the last HTTP
<br>&gt; response, following redirects. If any redirects are followed when performing<br>&gt; discovery on the realm, verification has failed. If discovery has<br>&gt; successfuly completed, check to make sure that the return_to URL matches one
<br>&gt; of the relying party endpoints.<br>&gt;<br>&gt; A realm may contain a wildcard, and so may not be a valid URL. In that case,<br>&gt; perform discovery on the URL obtained by substituting &quot;www&quot; for the wildcard
<br>&gt; in the realm.<br>&gt;<br>&gt; To match a return_to URL against a relying party endpoint, use the same<br>&gt; rules as for matching the return_to URL against the realm, treating the<br>&gt; relying party&#39;s endpoint URL as the realm. Relying party endpoint URLs MUST
<br>&gt; NOT contain a domain wildcard, and SHOULD be as specific as possible.<br>&gt;<br>&gt; If verification is attempted and fails, the provider SHOULD NOT send a<br>&gt; positive assertion to that return_to URL.<br>&gt;
<br>&gt; Providers MAY cache verified return_to URLs.<br>&gt;<br>&gt; I think it is a nice idea, however, it does not take into account situations<br>&gt; where a Relying Party may not exist on the public Internet.&nbsp;&nbsp;For instance,
<br>&gt; let&#39;s say I have an intranet application.&nbsp;&nbsp;The following is true:<br>&gt;<br>&gt; The application is located on a host in my office<br>&gt; My office is connected to the Internet via a NAT firewall (all internal IP
<br>&gt; addresses are not accessible from the Internet)<br>&gt; My application uses OpenID for authentication<br>&gt; A guest worker has been given permission to use my application with their<br>&gt; OpenID provided by another company
<br>&gt; The following should happen:<br>&gt;<br>&gt; The user will attempt to log in with their OpenID<br>&gt; My application will send a request to the OpenID Provider<br>&gt; The Provider will attempt to perform RP discovery
<br>&gt; The RP discovery will fail<br>&gt; The OpenID Provider rejects the authentication request<br>&gt; As you can see, for this use case, OpenID would no longer be usable.<br><br>From my reading of the spec, the OP only tries to verify the return_to
<br>value if RP discovery succeeds.&nbsp;&nbsp;If RP discovery fails, then return_to<br>verification is not attempted.<br><br>In the case of an intranet RP (or any other RP that hasn&#39;t implemented<br>discovery), any return_to URL that matches the realm should be
<br>acceptable.<br><br>The case where the OP SHOULD NOT return a positive assertion is if:<br> 1. the OP attempts RP discovery<br> 2. RP discovery succeeds<br> 3. the return_to URL is not in the list of discovered RP endpoints
<br><br>James.<br></blockquote></div><br>