Ah!  Thanks, Breno.  That&#39;s the part of the spec I didn&#39;t tie together.  That makes sense.  <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; - Voltaire<br>


<br><br><div class="gmail_quote">On Thu, Apr 9, 2009 at 11:57 AM, Breno de Medeiros <span dir="ltr">&lt;<a href="mailto:breno@google.com">breno@google.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Actually, the OpenID terminology implies that openid.identity must be<br>
an http(s) URI or XRI. See:<br>
<br>
==quote<br>
Section 2: Terminology<br>
<br>
Identifier:<br>
    An Identifier is either a &quot;http&quot; or &quot;https&quot; URI, (commonly<br>
referred to as a &quot;URL&quot; within this document), or an XRI (Reed, D. and<br>
D. McAlpin, “Extensible Resource Identifier (XRI) Syntax V2.0,” .)<br>
[XRI_Syntax_2.0]. This document defines various kinds of Identifiers,<br>
designed for use in different contexts.<br>
<br>
==/quote<br>
<br>
and later ...<br>
<br>
==quote<br>
<br>
OP-Local Identifier:<br>
    An alternate Identifier for an end user that is local to a<br>
particular OP and thus not necessarily under the end user&#39;s control.<br>
<br>
==/quote<br>
<br>
<br>
So if the spec writers intended that openid.identity could be<br>
anything, that is not what the spec actually says.<br>
<div><div></div><div class="h5"><br>
<br>
On Thu, Apr 9, 2009 at 11:51 AM, John Bradley &lt;<a href="mailto:john.bradley@wingaa.com">john.bradley@wingaa.com</a>&gt; wrote:<br>
&gt; Yes that has come up in the XRD 1.0 work.<br>
&gt;<br>
&gt; The &lt;LocalID&gt;  is a string and can be a XRI, URI, e-mail or any other thing<br>
&gt; that the OP uses to identify the user.<br>
&gt;<br>
&gt; In most cases that is a URL or a XRI but it could be anything.<br>
&gt;<br>
&gt; Delegation is a term that carried over from openID 1.0 and probably is not<br>
&gt; accurate any more.<br>
&gt;<br>
&gt; The provider you are asserting is your provider.<br>
&gt;<br>
&gt; If for some reason you provider knows you by some identifier other than the<br>
&gt; claimed_id then you can use the local_id to send an arbitrary string in the<br>
&gt; openid.identity.<br>
&gt;<br>
&gt; The only identifier that the RP should discover is the claimed_id.  If in<br>
&gt; the returned assertion by the OP the claimed_id and the openid.identity are<br>
&gt; not equal (less hash)  the openid.identiy must be the &lt;LocalID&gt; in the<br>
&gt; discovered information.<br>
&gt;<br>
&gt; RP&#39;s not properly verifying that is an issue where someone delegates to a OP<br>
&gt; doing &quot;Identifier Select&quot;.  (By issue I mean gaping security hole)<br>
&gt;<br>
&gt; That is a RP problem that can only occur when the User delegates there<br>
&gt; identity.<br>
&gt;<br>
&gt; Someone delegating a URI to a iName would be entering a XRI like =jbradley<br>
&gt; as the &lt;LocalID&gt;.<br>
&gt;<br>
&gt; It is also possible that someone delegating might not include the scheme ie<br>
&gt; <a href="http://ve7jtb.pip.verisignlabs.com" target="_blank">ve7jtb.pip.verisignlabs.com</a> as the &lt;LocalID&gt; that should work.<br>
&gt;<br>
&gt; John Bradley<br>
&gt;<br>
&gt; On 9-Apr-09, at 11:27 AM, Andrew Arnott wrote:<br>
&gt;<br>
&gt;&gt; No where in the OpenID 1.x or 2.0 spec (that I can find) is the user&#39;s<br>
&gt;&gt; LocalID (openid.identity) mandated to be a URI.  Yes, it&#39;s a &quot;local<br>
&gt;&gt; identifier&quot;, but the OP might choose to let that be simply the local<br>
&gt;&gt; username like &quot;andrew&quot;.  In this case, the OP hosted identity page might<br>
&gt;&gt; include something like this:<br>
&gt;&gt;<br>
&gt;&gt; &lt;link rel=&quot;openid2.provider&quot; href=&quot;<a href="http://provider/opendpoint" target="_blank">http://provider/opendpoint</a>&quot;&gt;<br>
&gt;&gt; &lt;link rel=&quot;openid2.local_id&quot; href=&quot;andrew&quot;&gt;<br>
&gt;&gt;<br>
&gt;&gt; So this looks like delegation because a local_id is given, but in this<br>
&gt;&gt; case it&#39;s not.  It just causes the RP to customize the openid.identity<br>
&gt;&gt; parameter to be &#39;andrew&#39;, which the OP will use to look up the username that<br>
&gt;&gt; should control the claimed_id.<br>
&gt;&gt;<br>
&gt;&gt; The reason I bring this up is because I&#39;ve seen many libraries assume that<br>
&gt;&gt; local_id is a URI and treat it as such.  I&#39;ve even heard ideas of performing<br>
&gt;&gt; discovery on the local_id.  Now, there&#39;s no reason to perform discovery on<br>
&gt;&gt; the local_id... only the claimed_id needs to be discovered.<br>
&gt;&gt;<br>
&gt;&gt; I don&#39;t even know if any OP out there uses non-URIs for local_id&#39;s.  But<br>
&gt;&gt; since it&#39;s not a contradiction in the OpenID 1.1 or 2.0 specs, I think that<br>
&gt;&gt; the 2.1 spec should call out EITHER that it MUST be a URI (and indicate<br>
&gt;&gt; whether discovery is required to succeed) OR that it CAN be any string at<br>
&gt;&gt; all that the OP is expecting.<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Andrew Arnott<br>
&gt;&gt; &quot;I [may] not agree with what you have to say, but I&#39;ll defend to the death<br>
&gt;&gt; your right to say it.&quot; - Voltaire<br>
&gt;<br>
</div></div>&gt; _______________________________________________<br>
&gt; general mailing list<br>
&gt; <a href="mailto:general@openid.net">general@openid.net</a><br>
&gt; <a href="http://openid.net/mailman/listinfo/general" target="_blank">http://openid.net/mailman/listinfo/general</a><br>
&gt;<br>
<font color="#888888"><br>
<br>
<br>
--<br>
--Breno<br>
<br>
+1 (650) 214-1007 desk<br>
+1 (408) 212-0135 (Grand Central)<br>
MTV-41-3 : 383-A<br>
PST (GMT-8) / PDT(GMT-7)<br>
</font></blockquote></div><br>