<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.apple-style-span
        {mso-style-name:apple-style-span;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Random thought &#8211; and no expert in this - &nbsp;but if the
client had some code that used a well known time-based algorithm to generate a
unique token/pin and combined it with a selected OpenID (i.e. the token generated
+openid in the next 60 secs will be the same as the token generated at a remote
location + openid) then could that not be used as the basis of oAuth requests?<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I have seen secure token for years which automates this [1] but maybe
through things such as Google gears (which I have on my pda) it would be
possible to provide some simple signed code that could manage this so any
client browser, application etc just makes a call (which *<b>if</b>* really
desired could itself be password protected on the client device) and then you
don&#8217;t need to remember any PIN &#8211; all the user needs to do is select
the OpenID to use and the &#8220;pin&#8221; is auto-generated for your device.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I haven&#8217;t thought through all the detail, just wanted to see
if anyone had considered this technique?<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>steven<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>http://livz.org<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><a href="http://en.wikipedia.org/wiki/Security_token">http://en.wikipedia.org/wiki/Security_token</a><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
general-bounces@openid.net [mailto:general-bounces@openid.net] <b>On Behalf Of </b>Eric
Sachs<br>
<b>Sent:</b> 05 November 2008 00:12<br>
<b>To:</b> Chris Messina<br>
<b>Cc:</b> oauth@googlegroups.com; OpenID user experience; OpenID List<br>
<b>Subject:</b> Re: [OpenID] Google Removes Relying Party Pre-Registration<o:p></o:p></span></p>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<div>

<p class=MsoNormal>&gt;&gt;&nbsp;I wrote up a quick sketch of an idea in
response to Eric's description&nbsp;of the problem with the OAuth flow for
desktop/mobile apps:<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>Thanks Chris for following up on that issue. &nbsp;I'll keep
on saying it until I am blue in the face, but we have to get the industry to
change the way rich-client apps are built, or federated login is going to
continue to be a very tough sell.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=MsoNormal>We have considered an approach along the lines of what you
described. &nbsp;In particular, s<span class=apple-style-span><span
style='font-family:"Arial","sans-serif"'>ome devices want to access a user's
data, but do not have the ability to display a full web browser.&nbsp; For example,
think of devices like an AppleTV, or a fridge that displays your family photos
from Flickr/Picassa.</span></span><o:p></o:p></p>

</div>

<div>

<p><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black'>One
of Google's challenges is that Google exposes lots of APIs such as Photos,
Health, &amp; Ads. &nbsp;So we want to allow the app to request access to just
a limited set of scopes. &nbsp;And for some of those scopes (like Health), we
even need the user to choose the access level and profile. &nbsp;<span
class=apple-style-span>Many OAuth SPs (like FriendFeed), do not need to support
that level of complexity, so in those cases the approach you described seems
reasonable.</span></span><o:p></o:p></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:black'>For Google, in the &quot;fridge display private photos&quot;
example, our team had suggested something like the following&nbsp;</span> <o:p></o:p></p>

<p><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black'>1)
Device/app starts the OAuth dance and also requests a PIN from Google which
Google will associate with the OAuth request token</span><o:p></o:p></p>

<p><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black'>2)
After the device/app gets the OAuth request token, it tells the user (or its
manual tells the user) to visit a short URL (like fridgephoto/register).&nbsp;
The device then displays the PIN they will need, and says to come back and
click a button on the device when they are told</span><o:p></o:p></p>

<p><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black'>3)&nbsp;The
user goes to a web browser on another device, like their personal computer, and
opens that site. &nbsp;The site is a static HTML page that gives some
introductory help text, and a link to Google's site to do the authorization.</span><o:p></o:p></p>

<p><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black'>4)
When the user clicks the link, they are sent to Google with the URLs parameters
for the scopes that device/app needs, and a Continue URL back to that site, as
well as a URL param indicating the user has a PIN&nbsp;</span><o:p></o:p></p>

<p><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black'>5)
They are then sent through the standard Google OAuth approval process.&nbsp; If
the user has not yet logged in, then they will need to do so (and this might
involve a redirection to a SAML/OpenID IDP and/or use of a strong auth
mechanism like a USB token)</span><o:p></o:p></p>

<p><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black'>5)
Once the user is logged in, they see a standard Google OAuth approval page with
information about the claimed app, the scopes, and any advanced controls such
as to pick access level or a profile. &nbsp;Assuming the user clicks okay, they
are then asked to enter the PIN. &nbsp;Google confirms the PIN is a valid
outstanding one, and then the user is&nbsp;redirected to the continueURL (like
fridgephoto/authzdone)</span><o:p></o:p></p>

<p><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black'>6)
That device/app's site displays a&nbsp;static HTML file that tells the user to go
back to the device/app and click a button to indicate they finished the
approval process</span><o:p></o:p></p>

<p><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black'>7)
The user click's the continue button on the device/app</span><o:p></o:p></p>

<p><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black'>8)
The device/app then finishes the OAuth dance</span><o:p></o:p></p>

<p><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black'>Note
that an &quot;evil&quot; hacker could request a lot of PINs from Google, and
hope that a user mistakenly types a PIN that is associated with a
&quot;hackers&quot; request token, thereby giving access to the user's data.
&nbsp;As an extra layer of security, we can send the user an E-mail after an
OAuth approval that used a PIN, with the &quot;claimed identity&quot; of the
app,&nbsp;and provide a single link the user can click to deactivate that OAuth
token. &nbsp;If the user does more then one approval for the same claimed app
in a short period of time, then on the OAuth approval page we might even give a
warning that the previous one might have been &quot;hijacked&quot; and give
them an easily way to deactivate any recent OAuth tokens issued to the same
claimed app.</span><o:p></o:p></p>

</div>

<p class=MsoNormal style='margin-bottom:12.0pt'><o:p>&nbsp;</o:p></p>

<div>

<p class=MsoNormal>On Thu, Oct 30, 2008 at 4:32 PM, Chris Messina &lt;<a
href="mailto:chris.messina@gmail.com" target="_blank">chris.messina@gmail.com</a>&gt;
wrote:<o:p></o:p></p>

<p class=MsoNormal>I wrote up a quick sketch of an idea in response to Eric's
description<br>
of the problem with the OAuth flow for desktop/mobile apps:<br>
<br>
<a
href="http://factoryjoe.com/blog/2008/10/30/lightweight-access-pins-a-modest-proposal-for-enabling-openid-in-desktop-and-mobile-apps/"
target="_blank">http://factoryjoe.com/blog/2008/10/30/lightweight-access-pins-a-modest-proposal-for-enabling-openid-in-desktop-and-mobile-apps/</a><br>
<br>
Food for thought. Comments welcome!<br>
<br>
Chris<o:p></o:p></p>

<div>

<p class=MsoNormal style='margin-bottom:12.0pt'><br>
On Fri, Oct 31, 2008 at 7:20 AM, David Recordon &lt;<a
href="mailto:drecordon@sixapart.com" target="_blank">drecordon@sixapart.com</a>&gt;
wrote:<br>
&gt; From<br>
&gt; <a
href="http://google-code-updates.blogspot.com/2008/10/moving-another-step-closer-to-single.html"
target="_blank">http://google-code-updates.blogspot.com/2008/10/moving-another-step-closer-to-single.html</a><br>
&gt;<br>
&gt; Moving another step closer to single-sign on<br>
&gt;<br>
&gt; Thursday, October 30, 2008<br>
&gt;<br>
&gt; By Eric Sachs, Google Security Team<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>&gt; One other question that a lot of people asked yesterday
is when a large<br>
&gt; provider like Google will become a relying party. There is one big problem<br>
&gt; that stands in the way of doing that, but fortunately it is more of a<br>
&gt; technology problem than a usability issue. That problem is that rich-client<br>
&gt; apps (desktop apps and mobile apps) are hard-coded to ask a user for their<br>
&gt; username and password. As an example, all Google rich-client apps would<br>
&gt; break if we supported federated login for our consumer users, and in fact<br>
&gt; they do break for the large number of our enterprise E-mail<br>
&gt; outsourcing customers who run their own identity provider, and for which<br>
&gt; Google is a relying party today. This problem with rich-client apps also<br>
&gt; affects other sites like Plaxo who are already relying parties.<o:p></o:p></p>

</div>

<p class=MsoNormal>&gt; _______________________________________________<br>
&gt; general mailing list<br>
&gt; <a href="mailto:general@openid.net" target="_blank">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>
&gt;<br>
<br>
<br>
<br>
--<br>
Chris Messina<br>
Citizen-Participant &amp;<br>
&nbsp;Open Technology Advocate-at-Large<br>
<a href="http://factoryjoe.com" target="_blank">factoryjoe.com</a> # <a
href="http://diso-project.org" target="_blank">diso-project.org</a><br>
<a href="http://citizenagency.com" target="_blank">citizenagency.com</a> # <a
href="http://vidoop.com" target="_blank">vidoop.com</a><br>
This email is: &nbsp; [ ] bloggable &nbsp; &nbsp;[X] ask first &nbsp; [ ]
private<br>
_______________________________________________<br>
general mailing list<br>
<a href="mailto:general@openid.net" target="_blank">general@openid.net</a><br>
<a href="http://openid.net/mailman/listinfo/general" target="_blank">http://openid.net/mailman/listinfo/general</a><o:p></o:p></p>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</body>

</html>