Return-Path: <wmills@yahoo-inc.com>
X-Original-To: oauth@core3.amsl.com
Delivered-To: oauth@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix)
 with ESMTP id 5A2113A6D5A for <oauth@core3.amsl.com>;
 Tue, 28 Sep 2010 10:18:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.547
X-Spam-Level: 
X-Spam-Status: No, score=-17.547 tagged_above=-999 required=5 tests=[AWL=0.050,
 BAYES_00=-2.599, HTML_MESSAGE=0.001, NO_RDNS_DOTCOM_HELO=0.001,
 USER_IN_DEF_WHITELIST=-15]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com
 [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MDzZdfFtCT3G for
 <oauth@core3.amsl.com>; Tue, 28 Sep 2010 10:17:58 -0700 (PDT)
Received: from mrout3.yahoo.com (mrout3.yahoo.com [216.145.54.173]) by
 core3.amsl.com (Postfix) with ESMTP id 55DD13A6DFC for <oauth@ietf.org>;
 Tue, 28 Sep 2010 10:17:57 -0700 (PDT)
Received: from SP2-EX07CAS03.ds.corp.yahoo.com
 (sp2-ex07cas03.corp.sp2.yahoo.com [98.137.59.35]) by mrout3.yahoo.com
 (8.13.8/8.13.8/y.out) with ESMTP id o8SHIAXK024885;
 Tue, 28 Sep 2010 10:18:10 -0700 (PDT)
Received: from SP2-EX07VS06.ds.corp.yahoo.com ([98.137.59.24]) by
 SP2-EX07CAS03.ds.corp.yahoo.com ([98.137.59.35]) with mapi;
 Tue, 28 Sep 2010 10:18:10 -0700
From: William Mills <wmills@yahoo-inc.com>
To: David Recordon <recordond@gmail.com>, OAuth WG <oauth@ietf.org>
Date: Tue, 28 Sep 2010 10:18:02 -0700
Thread-Topic: [OAUTH-WG] Signatures...what are we trying to solve?
Thread-Index: Acteyetg8vNwGiDkQk2754xEWV2EKgAZmC4g
Message-ID: <FFDFD7371D517847AD71FBB08F9A315612C11BC9E5@SP2-EX07VS06.ds.corp.yahoo.com>
References: <AANLkTimERshG-ndU8_uc0NJhx6ree6d8kxYj=EVeHpmA@mail.gmail.com>
In-Reply-To: <AANLkTimERshG-ndU8_uc0NJhx6ree6d8kxYj=EVeHpmA@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
acceptlanguage: en-US
Content-Type: multipart/alternative;
 boundary="_000_FFDFD7371D517847AD71FBB08F9A315612C11BC9E5SP2EX07VS06ds_"
MIME-Version: 1.0
Subject: Re: [OAUTH-WG] Signatures...what are we trying to solve?
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/oauth>,
 <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/oauth>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>,
 <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 28 Sep 2010 17:18:13 -0000

--_000_FFDFD7371D517847AD71FBB08F9A315612C11BC9E5SP2EX07VS06ds_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

 * Is there an example of an OAuth 2.0 server that can't use bearer tokens =
for protected resource requests and thus requires signatures?

The use case I see for signatures that isn't solved (as well) by tokens is =
3 way integrations where  it is useful to manage a secret as a way to manag=
e the business relationship.  I have also seen a lot of cases where the 3rd=
 party doesn't want to go SSL  (I'm not gonna try to justify this, it's jus=
t how things have worked that I've seen).

From: oauth-bounces@ietf.org [mailto:oauth-bounces@ietf.org] On Behalf Of D=
avid Recordon
Sent: Monday, September 27, 2010 9:58 PM
To: OAuth WG
Subject: [OAUTH-WG] Signatures...what are we trying to solve?

If you know me then you'll know that I'm generally one of the last people t=
o talk about Alice and Bob. That said, there are a lot of technical proposa=
ls flying across the list with very little shared understanding of the prob=
lem(s) we're trying to solve.

>From what I've seen there are two distinct classes of signature use cases.
1) The first is where the HTTP request parameters must be part of the signa=
ture. An example is any OAuth 1.0a style API where you want to make sure th=
at the HTTP POST your server just received isn't masquerading itself as a G=
ET.
2) The second is where the HTTP request is orthogonal. An example is OpenSo=
cial where the server is sending state information to the client such as wh=
at user is currently logged in.

The main practical example I have of the first use case is what Twitter wan=
ts to do with redelegation. In this case TweetDeck can't given TwitPic it's=
 own bearer token, but needs to sign the POST request and pass that signatu=
re to TwitPic for it to include in the final API request to Twitter.

In terms of signing protected resource requests, I haven't heard anyone bri=
ng up specific and detailed needs for this recently.

JSON tokens pretty clearly make sense for the second class of signature use=
 cases and it's actually a bit hard to argue why they would be a part of OA=
uth. Facebook shipped this a bit over a month ago for canvas applications. =
We include a `signed_request` parameter which is signature.base64url(JSON).=
 Parsing it is 18 lines of PHP. http://developers.facebook.com/docs/authent=
ication/canvas

This second class of use case will also be required by OpenID Connect where=
 the server is signing identity information and sending it to the client. I=
 imagine that OpenSocial will also still have it and wish to continue relyi=
ng on public key algorithms.

So a few questions:
 * Do we want to tackle both of these classes of signatures in OAuth?
 * Why do you consider the second class part of OAuth versus something comp=
letely separate that might happen to include an OAuth access token?
 * Is the Twitter redelegation use case the right focus for the first class=
?
 * Is there an example of an OAuth 2.0 server that can't use bearer tokens =
for protected resource requests and thus requires signatures?

Thanks,
--David

--_000_FFDFD7371D517847AD71FBB08F9A315612C11BC9E5SP2EX07VS06ds_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:x=3D"urn:schemas-microsoft-com:office:excel" xmlns:p=3D"urn:schemas-m=
icrosoft-com:office:powerpoint" xmlns:a=3D"urn:schemas-microsoft-com:office=
:access" xmlns:dt=3D"uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s=3D"=
uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs=3D"urn:schemas-microsof=
t-com:rowset" xmlns:z=3D"#RowsetSchema" xmlns:b=3D"urn:schemas-microsoft-co=
m:office:publisher" xmlns:ss=3D"urn:schemas-microsoft-com:office:spreadshee=
t" xmlns:c=3D"urn:schemas-microsoft-com:office:component:spreadsheet" xmlns=
:odc=3D"urn:schemas-microsoft-com:office:odc" xmlns:oa=3D"urn:schemas-micro=
soft-com:office:activation" xmlns:html=3D"http://www.w3.org/TR/REC-html40" =
xmlns:q=3D"http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc=3D"http://m=
icrosoft.com/officenet/conferencing" xmlns:D=3D"DAV:" xmlns:Repl=3D"http://=
schemas.microsoft.com/repl/" xmlns:mt=3D"http://schemas.microsoft.com/share=
point/soap/meetings/" xmlns:x2=3D"http://schemas.microsoft.com/office/excel=
/2003/xml" xmlns:ppda=3D"http://www.passport.com/NameSpace.xsd" xmlns:ois=
=3D"http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir=3D"http://=
schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds=3D"http://www.w3=
.org/2000/09/xmldsig#" xmlns:dsp=3D"http://schemas.microsoft.com/sharepoint=
/dsp" xmlns:udc=3D"http://schemas.microsoft.com/data/udc" xmlns:xsd=3D"http=
://www.w3.org/2001/XMLSchema" xmlns:sub=3D"http://schemas.microsoft.com/sha=
repoint/soap/2002/1/alerts/" xmlns:ec=3D"http://www.w3.org/2001/04/xmlenc#"=
 xmlns:sp=3D"http://schemas.microsoft.com/sharepoint/" xmlns:sps=3D"http://=
schemas.microsoft.com/sharepoint/soap/" xmlns:xsi=3D"http://www.w3.org/2001=
/XMLSchema-instance" xmlns:udcs=3D"http://schemas.microsoft.com/data/udc/so=
ap" xmlns:udcxf=3D"http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udc=
p2p=3D"http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf=3D"http:/=
/schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss=3D"http://sche=
mas.microsoft.com/office/2006/digsig-setup" xmlns:dssi=3D"http://schemas.mi=
crosoft.com/office/2006/digsig" xmlns:mdssi=3D"http://schemas.openxmlformat=
s.org/package/2006/digital-signature" xmlns:mver=3D"http://schemas.openxmlf=
ormats.org/markup-compatibility/2006" xmlns:m=3D"http://schemas.microsoft.c=
om/office/2004/12/omml" xmlns:mrels=3D"http://schemas.openxmlformats.org/pa=
ckage/2006/relationships" xmlns:spwp=3D"http://microsoft.com/sharepoint/web=
partpages" xmlns:ex12t=3D"http://schemas.microsoft.com/exchange/services/20=
06/types" xmlns:ex12m=3D"http://schemas.microsoft.com/exchange/services/200=
6/messages" xmlns:pptsl=3D"http://schemas.microsoft.com/sharepoint/soap/Sli=
deLibrary/" xmlns:spsl=3D"http://microsoft.com/webservices/SharePointPortal=
Server/PublishedLinksService" xmlns:Z=3D"urn:schemas-microsoft-com:" xmlns:=
st=3D"&#1;" xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; charset=3Dus-ascii">
<meta name=3DGenerator content=3D"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:0in;
	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;}
span.EmailStyle17
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
	{page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext=3D"edit">
  <o:idmap v:ext=3D"edit" data=3D"1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=3DEN-US link=3Dblue vlink=3Dpurple>

<div class=3DSection1>

<p class=3DMsoNormal>&nbsp;* Is there an example of an OAuth 2.0 server tha=
t
can't use bearer tokens for protected resource requests and thus requires
signatures?<o:p></o:p></p>

<p class=3DMsoNormal><span style=3D'font-size:11.0pt;font-family:"Calibri",=
"sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span style=3D'font-size:11.0pt;font-family:"Calibri",=
"sans-serif";
color:#1F497D'>The use case I see for signatures that isn&#8217;t solved (a=
s
well) by tokens is 3 way integrations where&nbsp; it is useful to manage a
secret as a way to manage the business relationship.&nbsp; I have also seen=
 a
lot of cases where the 3<sup>rd</sup> party doesn&#8217;t want to go SSL &n=
bsp;(I&#8217;m
not gonna try to justify this, it&#8217;s just how things have worked that =
I&#8217;ve
seen).<o:p></o:p></span></p>

<p class=3DMsoNormal><span style=3D'font-size:11.0pt;font-family:"Calibri",=
"sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style=3D'border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in =
4.0pt'>

<div>

<div style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in'>

<p class=3DMsoNormal><b><span style=3D'font-size:10.0pt;font-family:"Tahoma=
","sans-serif"'>From:</span></b><span
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
oauth-bounces@ietf.org [mailto:oauth-bounces@ietf.org] <b>On Behalf Of </b>=
David
Recordon<br>
<b>Sent:</b> Monday, September 27, 2010 9:58 PM<br>
<b>To:</b> OAuth WG<br>
<b>Subject:</b> [OAUTH-WG] Signatures...what are we trying to solve?<o:p></=
o:p></span></p>

</div>

</div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

<div>

<p class=3DMsoNormal>If you know me then you'll know that I'm generally one=
 of
the last people to talk about Alice and Bob. That said, there are a lot of
technical proposals flying across the list with very little shared
understanding of the problem(s) we're trying to solve.<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal>From what I've seen there are two distinct classes of
signature use cases.<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal>1) The first is where the HTTP request parameters must=
 be
part of the signature. An example is any OAuth 1.0a style API where you wan=
t to
make sure that the HTTP POST your server just received isn't masquerading
itself as a GET.<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal>2) The second is&nbsp;where the HTTP request is orthog=
onal.
An example is&nbsp;OpenSocial where the server is sending state information=
 to
the client such as what user is currently logged in.<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal>The main practical example I have of the first use cas=
e is
what Twitter wants to do with redelegation. In this case TweetDeck can't gi=
ven
TwitPic it's own bearer token, but needs to sign the POST request and pass =
that
signature to TwitPic for it to include in the final API request to Twitter.=
<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal>In terms of signing protected resource requests, I hav=
en't
heard anyone bring up specific and detailed needs for this recently.<o:p></=
o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal>JSON tokens pretty clearly make sense for the second c=
lass
of signature use cases and it's actually a bit hard to argue why they would=
 be
a part of OAuth. Facebook shipped this a bit over a month ago for canvas
applications. We include a `signed_request` parameter which is
signature.base64url(JSON). Parsing it is 18 lines of PHP. <a
href=3D"http://developers.facebook.com/docs/authentication/canvas">http://d=
evelopers.facebook.com/docs/authentication/canvas</a><o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal>This second class of use case will also be required by
OpenID Connect where the server is signing identity information and sending=
 it
to the client. I imagine that OpenSocial will also still have it and wish t=
o
continue relying on public key algorithms.<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal>So a few questions:<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal>&nbsp;* Do we want to tackle both of these classes of
signatures in OAuth?<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal>&nbsp;* Why do you consider the second class part of O=
Auth
versus something completely separate that might happen to include an OAuth
access token?<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal>&nbsp;* Is the Twitter redelegation use case the right=
 focus
for the first class?<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal>&nbsp;* Is there an example of an OAuth 2.0 server tha=
t
can't use bearer tokens for protected resource requests and thus requires
signatures?<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal>Thanks,<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal>--David<o:p></o:p></p>

</div>

</div>

</div>

</body>

</html>

--_000_FFDFD7371D517847AD71FBB08F9A315612C11BC9E5SP2EX07VS06ds_--
