On Thu, May 20, 2010 at 10:10 AM, David Recordon <span dir="ltr">&lt;<a href="mailto:recordond@gmail.com">recordond@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
No, my point is that exposing the access token (which is more powerful) by default is a poor idea.</blockquote><div><br></div><div>Your proposal includes an access token (it doesn&#39;t call it that, but that&#39;s what it is) that is, when set as a cookie over non-SSL, exposed. </div>
<div><br></div><div>Whether or not access tokens are exposed is an orthogonal issue to what they look like. I&#39;m arguing for making all access tokens look the same. I&#39;m not arguing for exposing them.</div><div><br>
</div><div>Dirk.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div class="h5"><div><div class="gmail_quote">On Thu, May 20, 2010 at 10:07 AM, Breno de Medeiros <span dir="ltr">&lt;<a href="mailto:breno@google.com" target="_blank">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">Yes, that&#39;s my point.<br>
<br>
David&#39;s point is that we need two tokens to defend against these scenarios.<br>
<div><div></div><div><br>
On Thu, May 20, 2010 at 10:02, Allen Tom &lt;<a href="mailto:atom@yahoo-inc.com" target="_blank">atom@yahoo-inc.com</a>&gt; wrote:<br>
&gt; Isn&#39;t this currently the case with the OpenID/Oauth Hybrid? If the RP has an<br>
&gt; Access Token for the user, and the RP&#39;s login cookies are compromised, the<br>
&gt; attacker will be able to use the RP as a proxy to the user&#39;s data on the OP.<br>
&gt;<br>
&gt; Is there a new attack scenario that has been introduced that was not already<br>
&gt; present in the existing OpenID 2.0/Hybrid?<br>
&gt;<br>
&gt; Allen<br>
&gt;<br>
&gt;<br>
&gt; On 5/19/10 11:06 PM, &quot;Breno de Medeiros&quot; &lt;<a href="mailto:breno@google.com" target="_blank">breno@google.com</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; I am saying that if someone steals the user login cookie for<br>
&gt;&gt; <a href="http://coolcalendar.com" target="_blank">coolcalendar.com</a> and coolcalendar also has a token to access the user<br>
&gt;&gt; contact data, it&#39;s pretty likely that the attacker will recover the<br>
&gt;&gt; contacts even if the login cookie is not the same token as the contact<br>
&gt;&gt; access token.<br>
&gt;&gt;<br>
&gt;&gt; It is probably more effective as a security mechanism to restrict<br>
&gt;&gt; lifetime of access token in this case.<br>
&gt;&gt;<br>
&gt;&gt; On Wednesday, May 19, 2010, Allen Tom &lt;<a href="mailto:atom@yahoo-inc.com" target="_blank">atom@yahoo-inc.com</a>&gt; wrote:<br>
&gt;&gt;&gt; Hi Breno,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Can you describe the attack scenario with an example?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Thanks,<br>
&gt;&gt;&gt; Allen<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On 5/19/10 8:38 PM, &quot;Breno de Medeiros&quot; &lt;<a href="mailto:breno@google.com" target="_blank">breno@google.com</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On Wed, May 19, 2010 at 20:36, David Recordon &lt;<a href="mailto:recordond@gmail.com" target="_blank">recordond@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt; So because one thing is potentially insecure we should knowingly make two<br>
&gt;&gt;&gt;&gt;&gt; things insecure? I&#39;m not following your logic here. :-\<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I am saying that the first insecure thing unlocks the second.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; On Wed, May 19, 2010 at 8:34 PM, Breno de Medeiros &lt;<a href="mailto:breno@google.com" target="_blank">breno@google.com</a>&gt;<br>
&gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; On Wed, May 19, 2010 at 20:28, David Recordon &lt;<a href="mailto:recordond@gmail.com" target="_blank">recordond@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; And given that the server would return one token good for both the<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; `openid`<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; and `calendar` scopes, leaking it via HTTP cookies would be bad. Thus in<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; my<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; proposal the access token remains secret and is useful for a variety of<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; scopes while the signature ­ sure another form of a &quot;token&quot; ­ can become<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; public and not compromise security.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Isn&#39;t it likely that compromising the logged-in state at the client<br>
&gt;&gt;&gt;&gt;&gt;&gt; exposes the data protected by the access token anyway, since the<br>
&gt;&gt;&gt;&gt;&gt;&gt; client has access to the token and therefore the data was probably<br>
&gt;&gt;&gt;&gt;&gt;&gt; imported and is available in the client?<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; --David<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; On Wed, May 19, 2010 at 8:18 PM, Allen Tom &lt;<a href="mailto:atom@yahoo-inc.com" target="_blank">atom@yahoo-inc.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Whoa, I think itıs premature to say that Yahoo supports OpenID Connect,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; but I would imagine that only a single Access Token would be returned<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="http://coolcalendar.com" target="_blank">coolcalendar.com</a> ­ the Access Token would presumably be good for both<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ³openid² and ³calendar² scope. Why would the OP want to return 2<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; tokens?<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Allen<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On 5/19/10 5:27 PM, &quot;Dirk Balfanz&quot; &lt;<a href="mailto:balfanz@google.com" target="_blank">balfanz@google.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Let&#39;s say I&#39;m <a href="http://coolcalendar.com" target="_blank">coolcalendar.com</a> &lt;<a href="http://coolcalendar.com" target="_blank">http://coolcalendar.com</a>&gt; , and I want<br>


&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &quot;connect&quot; one of my user&#39;s accounts to his Yahoo! account. I don&#39;t want<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; roll my own auth system, so I&#39;m happy to see that Yahoo! supports<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; OpenID<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Connect. To connect, I&#39;ll send the user over to Yahoo! with<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; scope=openid%20yahoo-calendar. What I get back, in your proposal, is<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; two<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; different kinds of &quot;tokens&quot;: the access token that my servers use to<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; access<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Yahoo! and something I&#39;ll call &quot;openid connect token&quot; (which in your<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; proposal comprises a few different parameters - user id, timestamp,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; signature, etc.) that browsers use (in form of a cookie) to access my<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; own<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; servers at <a href="http://coolcalendar.com" target="_blank">coolcalendar.com</a> &lt;<a href="http://coolcalendar.com" target="_blank">http://coolcalendar.com</a>&gt; .<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Why do those two tokens look different? They serve the same purpose -<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; authenticating access from a client to a server, so they should look<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; same.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Why should Yahoo! run different code to authenticate requests coming<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; from<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; my server than the code I&#39;m running on my servers to authenticate<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; requests<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; coming from browsers - we have to solve the same task, so we should run<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; same code. It&#39;s simpler.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;<br>
&gt;<br>
<br>
<br>
<br>
</div></div><div><div></div><div>--<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>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br>