Return-Path: <gffletch@aol.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 2ED1E3A6FD9 for <oauth@core3.amsl.com>;
 Mon,  4 Oct 2010 09:19:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.391
X-Spam-Level: 
X-Spam-Status: No, score=-0.391 tagged_above=-999 required=5 tests=[AWL=-1.277,
 BAYES_50=0.001, HTML_FONT_FACE_BAD=0.884, HTML_MESSAGE=0.001]
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 lCgnIDAnkhZ6 for
 <oauth@core3.amsl.com>; Mon,  4 Oct 2010 09:19:35 -0700 (PDT)
Received: from imr-db03.mx.aol.com (imr-db03.mx.aol.com [205.188.91.97]) by
 core3.amsl.com (Postfix) with ESMTP id 2BB813A6CAB for <oauth@ietf.org>;
 Mon,  4 Oct 2010 09:19:35 -0700 (PDT)
Received: from mtaout-da02.r1000.mx.aol.com (mtaout-da02.r1000.mx.aol.com
 [172.29.51.130]) by imr-db03.mx.aol.com (8.14.1/8.14.1) with ESMTP id
 o94GJxu7015788; Mon, 4 Oct 2010 12:19:59 -0400
Received: from palantir.local (unknown [10.181.183.108]) (using TLSv1 with
 cipher AES256-SHA (256/256 bits)) (No client certificate requested) by
 mtaout-da02.r1000.mx.aol.com (MUA/Third Party Client Interface) with ESMTPSA
 id 5EF47E000087; Mon,  4 Oct 2010 12:19:58 -0400 (EDT)
Message-ID: <4CA9FEAC.8090407@aol.com>
Date: Mon, 04 Oct 2010 12:19:56 -0400
From: George Fletcher <gffletch@aol.com>
Organization: AOL LLC
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US;
 rv:1.9.2.9) Gecko/20100915 Thunderbird/3.1.4
MIME-Version: 1.0
To: "Zeltsan, Zachary (Zachary)" <zachary.zeltsan@alcatel-lucent.com>
References: <AANLkTimERshG-ndU8_uc0NJhx6ree6d8kxYj=EVeHpmA@mail.gmail.com>
 <4CA20BFC.90704@aol.com>
 <5710F82C0E73B04FA559560098BF95B124FB233412@USNAVSXCHMBSA3.ndc.alcatel-lucent.com>
In-Reply-To: <5710F82C0E73B04FA559560098BF95B124FB233412@USNAVSXCHMBSA3.ndc.alcatel-lucent.com>
Content-Type: multipart/alternative;
 boundary="------------010205030904060000090408"
x-aol-global-disposition: G
X-AOL-SCOLL-SCORE: 0:2:466027680:93952408  
X-AOL-SCOLL-URL_COUNT: 0  
x-aol-sid: 3039ac1d33824ca9feae4517
X-AOL-IP: 10.181.183.108
Cc: OAuth WG <oauth@ietf.org>
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: Mon, 04 Oct 2010 16:19:40 -0000

This is a multi-part message in MIME format.
--------------010205030904060000090408
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

  Hi Zachary,

Here is a use case for signed messages. I've tried to keep this in the 
format of the other OAuth use cases. Please contact me off-list if there 
are editorial changes required. I've include the list to see if others 
have feed back on this use case.

Thanks,
George

Use case: Signed Messages

Description:

Alice manages all her personal health records in her personal health 
data store (www.myhealth.example.com). Alice's Primary Care Physician 
(www.pcp.example.com) recommends that Alice see a sleep specialist 
(www.sleepwell.example.com). Alice arrives at the sleep specialist's 
office and authorizes it to access her basic health data from her PCP. 
The application at www.pcp.example.com verifies that Alice has 
authorized www.sleepwell.example.com to access her health data as well 
as enforces that www.sleepwell.example.com is the only application that 
can retrieve that data with that specific authorization.

Pre-conditions:

* Alice has a personal health data store that allows for discovery of 
her participating health systems (e.g. psychiatrist, sleep specialist, 
pcp, orthodontist, ophthalmologist, etc).
* The application at www.myhealth.example.com manages authorization of 
access to Alice's participating health systems
* The application at www.myhealth.example.com can issues authorization 
tokens understood by Alice's participating health systems
* The application at www.pcp.example.com stores Alice's basic health and 
prescription records
* The application at www.sleepwell.com stores results of Alice's sleep tests


Post-conditions:
* A successful procedure results in just the information that Alice 
authorized being transferred from the Primary Care Physician 
(www.pcp.example.com) to the sleep specialist (www.sleepwell.example.com).
* The transfer of health data only occurs if the application at 
www.pcp.example.com can verify that www.sleepwell.example.com is the 
party requesting access and that the authorization token presented by 
www.sleepwell.example.com is issued by the application at 
www.myhealth.example.com with a restricted audience of 
www.sleepwell.example.com

Requirements:
* The application at www.sleepwell.example.com accesses 
www.myhealth.example.com to discover the location of the PCP system (XRD 
discovery)
* The application at www.sleepwell.example.com requests Alice to 
authorize access to the application at www.pcp.example.com for the 
purpose of retrieving basic health data (e.g. date-of-birth, weight, 
height, etc). The mechanism Alice uses to authorize this access is out 
of scope for this use case.
* The application at www.myhealth.example.com issues a token bound to 
www.sleepwell.example.com for access to the application at 
www.pcp.example.com. Note that a signed token (JWT) can be used to prove 
who issued the token.
* The application at www.sleepwell.example.com constructs a request 
(includes the token issued by www.myhealth.example.com) to the 
application at www.pcp.example.com
* The application at www.sleepwell.example.com signs the request before 
sending it to www.pcp.example.com
* The application at www.pcp.example.com receives the request and 
verifies the signature
* The application at www.pcp.example.com parses the message and finds 
the authorization token
* The application at www.pcp.example.com verifies the signature of the 
authorization token
* The application at www.pcp.example.com parses the authorization token 
and verifies that this token was issued to the application at 
www.sleepwell.com
* The application at www.pcp.example.com retrieves the requested data 
and returns it to the application at www.sleepwell.example.com



On 9/28/10 12:27 PM, Zeltsan, Zachary (Zachary) wrote:
>
> These use cases are not in the draft 
> https://datatracker.ietf.org/doc/draft-zeltsan-use-cases-oauth.
>
> Could you write them up?
>
> Thanks,
>
> Zachary
>
> ------------------------------------------------------------------------
>
> *From:* oauth-bounces@ietf.org [mailto:oauth-bounces@ietf.org] *On 
> Behalf Of *George Fletcher
> *Sent:* Tuesday, September 28, 2010 11:39 AM
> *To:* OAuth WG
> *Subject:* Re: [OAUTH-WG] Signatures...what are we trying to solve?
>
> I think of the signature issues as falling into two classes... I think 
> they map to your classification as well...
>
>     * *Signing tokens* is important for interoperability especially
>       looking forward to a time when tokens issued by multiple
>       Authorization Servers are accepted at a given host.
>     * *Signing messages* is important because it provides a mechanism
>       to ensure that the entity making the API call (and presenting an
>       access token) is really the entity that is allowed to make the
>       API call.
>
> Signing messages applies to the re-delegation use cases. I've heard 
> the need for this class of use cases from both the hData (health data) 
> community as well as the user managed access (UMA) community.
>
> Signing tokens covers both your second class of tokens as well as 
> another use case that Eran has mentioned as well. Namely, a protected 
> resource server honoring tokens from multiple Authorization Servers.
>
> These are the two classes of use cases that I'd like to see solved.
>
> Thanks,
> George
>
>
> On 9/28/10 12:58 AM, David Recordon wrote:
>
> 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.
>
> 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 
> signature. An example is any OAuth 1.0a style API where you want to 
> make sure that the HTTP POST your server just received isn't 
> masquerading itself as a GET.
>
> 2) The second is where the HTTP request is orthogonal. An example 
> is OpenSocial where the server is sending state information to the 
> client such as what user is currently logged in.
>
> The main practical example I have of the first use case is what 
> Twitter wants 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 signature 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 bring 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 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. 
> http://developers.facebook.com/docs/authentication/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 relying 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 
> completely 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
>
>   
>
>   
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org  <mailto:OAuth@ietf.org>
> https://www.ietf.org/mailman/listinfo/oauth
>


--------------010205030904060000090408
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    <font face="Helvetica, Arial, sans-serif">Hi Zachary,<br>
      <br>
      Here is a use case for signed messages. I've tried to keep this in
      the format of the other OAuth use cases. Please contact me
      off-list if there are editorial changes required. I've include the
      list to see if others have feed back on this use case.<br>
      <br>
      Thanks,<br>
      George<br>
      <br>
    </font><font face="Helvetica, Arial, sans-serif">Use case: Signed
      Messages<br>
      <br>
      Description:<br>
      <br>
      Alice manages all her personal health records in her personal
      health data store (<a class="moz-txt-link-abbreviated"
        href="http://www.myhealth.example.com">www.myhealth.example.com</a>).
      Alice's Primary Care Physician (<a
        class="moz-txt-link-abbreviated"
        href="http://www.pcp.example.com">www.pcp.example.com</a>)
      recommends that Alice see a sleep specialist (<a
        class="moz-txt-link-abbreviated"
        href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>).
      Alice arrives at the sleep specialist's office and authorizes it
      to access her basic health data from her PCP. The application at <a
        class="moz-txt-link-abbreviated"
        href="http://www.pcp.example.com">www.pcp.example.com</a>
      verifies that Alice has authorized <a
        class="moz-txt-link-abbreviated"
        href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
      to access her health data as well as enforces that <a
        class="moz-txt-link-abbreviated"
        href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
      is the only application that can retrieve that data with that
      specific authorization.<br>
      <br>
      Pre-conditions:<br>
      <br>
      * Alice has a personal health data store that allows for discovery
      of her participating health systems (e.g. psychiatrist, sleep
      specialist, pcp, orthodontist, ophthalmologist, etc).<br>
      * The application at <a class="moz-txt-link-abbreviated"
        href="http://www.myhealth.example.com">www.myhealth.example.com</a>
      manages authorization of access to Alice's participating health
      systems<br>
      * The application at <a class="moz-txt-link-abbreviated"
        href="http://www.myhealth.example.com">www.myhealth.example.com</a>
      can issues authorization tokens understood by Alice's
      participating health systems<br>
      * The application at <a class="moz-txt-link-abbreviated"
        href="http://www.pcp.example.com">www.pcp.example.com</a> stores
      Alice's basic health and prescription records<br>
      * The application at <a class="moz-txt-link-abbreviated"
        href="http://www.sleepwell.com">www.sleepwell.com</a> stores
      results of Alice's sleep tests<br>
      <br>
      <br>
      Post-conditions:<br>
      * A successful procedure results in just the information that
      Alice authorized being transferred from the Primary Care Physician
      (<a class="moz-txt-link-abbreviated"
        href="http://www.pcp.example.com">www.pcp.example.com</a>) to
      the sleep specialist (<a class="moz-txt-link-abbreviated"
        href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>).<br>
      * The transfer of health data only occurs if the application at <a
        class="moz-txt-link-abbreviated"
        href="http://www.pcp.example.com">www.pcp.example.com</a> can
      verify that <a class="moz-txt-link-abbreviated"
        href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
      is the party requesting access and that the authorization token
      presented by <a class="moz-txt-link-abbreviated"
        href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
      is issued by the application at <a
        class="moz-txt-link-abbreviated"
        href="http://www.myhealth.example.com">www.myhealth.example.com</a>
      with a restricted audience of <a class="moz-txt-link-abbreviated" href="http://www.sleepwell.example.com">www.sleepwell.example.com</a><br>
      <br>
      Requirements:<br>
      * The application at <a class="moz-txt-link-abbreviated"
        href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
      accesses <a class="moz-txt-link-abbreviated"
        href="http://www.myhealth.example.com">www.myhealth.example.com</a>
      to discover the location of the PCP system (XRD discovery)<br>
      * The application at <a class="moz-txt-link-abbreviated"
        href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
      requests Alice to authorize access to the application at <a
        class="moz-txt-link-abbreviated"
        href="http://www.pcp.example.com">www.pcp.example.com</a> for
      the purpose of retrieving basic health data (e.g. date-of-birth,
      weight, height, etc). The mechanism Alice uses to authorize this
      access is out of scope for this use case.<br>
      * The application at <a class="moz-txt-link-abbreviated"
        href="http://www.myhealth.example.com">www.myhealth.example.com</a>
      issues a token bound to <a class="moz-txt-link-abbreviated"
        href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
      for access to the application at <a
        class="moz-txt-link-abbreviated"
        href="http://www.pcp.example.com">www.pcp.example.com</a>. Note
      that a signed token (JWT) can be used to prove who issued the
      token.<br>
      * The application at <a class="moz-txt-link-abbreviated"
        href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
      constructs a request (includes the token issued by <a
        class="moz-txt-link-abbreviated"
        href="http://www.myhealth.example.com">www.myhealth.example.com</a>)
      to the application at <a class="moz-txt-link-abbreviated"
        href="http://www.pcp.example.com">www.pcp.example.com</a><br>
      * The application at <a class="moz-txt-link-abbreviated"
        href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
      signs the request before sending it to <a
        class="moz-txt-link-abbreviated"
        href="http://www.pcp.example.com">www.pcp.example.com</a><br>
      * The application at <a class="moz-txt-link-abbreviated"
        href="http://www.pcp.example.com">www.pcp.example.com</a>
      receives the request and verifies the signature<br>
      * The application at <a class="moz-txt-link-abbreviated"
        href="http://www.pcp.example.com">www.pcp.example.com</a> parses
      the message and finds the authorization token<br>
      * The application at <a class="moz-txt-link-abbreviated"
        href="http://www.pcp.example.com">www.pcp.example.com</a>
      verifies the signature of the authorization token<br>
      * The application at <a class="moz-txt-link-abbreviated"
        href="http://www.pcp.example.com">www.pcp.example.com</a> parses
      the authorization token and verifies that this token was issued to
      the application at <a class="moz-txt-link-abbreviated"
        href="http://www.sleepwell.com">www.sleepwell.com</a><br>
      * The application at <a class="moz-txt-link-abbreviated"
        href="http://www.pcp.example.com">www.pcp.example.com</a>
      retrieves the requested data and returns it to the application at
      <a class="moz-txt-link-abbreviated"
        href="http://www.sleepwell.example.com">www.sleepwell.example.com</a><br>
      <br>
    </font><br>
    <br>
    On 9/28/10 12:27 PM, Zeltsan, Zachary (Zachary) wrote:
    <blockquote
cite="mid:5710F82C0E73B04FA559560098BF95B124FB233412@USNAVSXCHMBSA3.ndc.alcatel-lucent.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      <meta name="Generator" content="Microsoft Word 11 (filtered
        medium)">
      <!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
      <style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:Helvetica;
	panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
@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";
	color:black;}
a:link, span.MsoHyperlink
	{color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{color:blue;
	text-decoration:underline;}
pre
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";
	color:black;}
span.EmailStyle18
	{mso-style-type:personal-reply;
	font-family:Arial;
	color:navy;}
@page Section1
	{size:595.3pt 841.9pt;
	margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
	{page:Section1;}
 /* List Definitions */
 @list l0
	{mso-list-id:130027848;
	mso-list-template-ids:931952956;}
@list l0:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:.5in;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-ansi-font-size:10.0pt;
	font-family:Symbol;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
-->
</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]-->
      <div class="Section1">
        <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
              style="font-size: 10pt; font-family: Arial; color: navy;">These
              use cases are not in the draft <a moz-do-not-send="true"
href="https://datatracker.ietf.org/doc/draft-zeltsan-use-cases-oauth">https://datatracker.ietf.org/doc/draft-zeltsan-use-cases-oauth</a>.<o:p></o:p></span></font></p>
        <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
              style="font-size: 10pt; font-family: Arial; color: navy;">Could
              you write them up?<o:p></o:p></span></font></p>
        <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
              style="font-size: 10pt; font-family: Arial; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
        <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
              style="font-size: 10pt; font-family: Arial; color: navy;">Thanks,<o:p></o:p></span></font></p>
        <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
              style="font-size: 10pt; font-family: Arial; color: navy;">Zachary<o:p></o:p></span></font></p>
        <p class="MsoNormal"><font color="navy" face="Arial" size="2"><span
              style="font-size: 10pt; font-family: Arial; color: navy;"><o:p>&nbsp;</o:p></span></font></p>
        <div>
          <div class="MsoNormal" style="text-align: center;"
            align="center"><font color="black" face="Times New Roman"
              size="3"><span style="font-size: 12pt; color: windowtext;">
                <hr tabindex="-1" align="center" size="2" width="100%">
              </span></font></div>
          <p class="MsoNormal"><b><font color="black" face="Tahoma"
                size="2"><span style="font-size: 10pt; font-family:
                  Tahoma; color: windowtext; font-weight: bold;">From:</span></font></b><font
              color="black" face="Tahoma" size="2"><span
                style="font-size: 10pt; font-family: Tahoma; color:
                windowtext;"> <a class="moz-txt-link-abbreviated" href="mailto:oauth-bounces@ietf.org">oauth-bounces@ietf.org</a>
                [<a class="moz-txt-link-freetext" href="mailto:oauth-bounces@ietf.org">mailto:oauth-bounces@ietf.org</a>] <b><span
                    style="font-weight: bold;">On Behalf Of </span></b>George
                Fletcher<br>
                <b><span style="font-weight: bold;">Sent:</span></b>
                Tuesday, September 28, 2010
                11:39 AM<br>
                <b><span style="font-weight: bold;">To:</span></b> OAuth
                WG<br>
                <b><span style="font-weight: bold;">Subject:</span></b>
                Re: [OAUTH-WG]
                Signatures...what are we trying to solve?</span></font><font
              color="black"><span style="color: windowtext;"><o:p></o:p></span></font></p>
        </div>
        <p class="MsoNormal"><font color="black" face="Times New Roman"
            size="3"><span style="font-size: 12pt;"><o:p>&nbsp;</o:p></span></font></p>
        <p class="MsoNormal"><font color="black" face="Helvetica"
            size="3"><span style="font-size: 12pt; font-family:
              Helvetica;">I think of the signature issues
              as falling into two classes... I think they map to your
              classification as
              well...</span></font><o:p></o:p></p>
        <ul type="disc">
          <li class="MsoNormal" style=""><b><font color="black"
                face="Helvetica" size="3"><span style="font-size: 12pt;
                  font-family: Helvetica; font-weight: bold;">Signing
                  tokens</span></font></b><font face="Helvetica"><span
                style="font-family: Helvetica;"> is important for
                interoperability especially looking forward to a time
                when tokens issued by multiple Authorization Servers are
                accepted at a given host.</span></font><o:p></o:p></li>
          <li class="MsoNormal" style=""><b><font color="black"
                face="Helvetica" size="3"><span style="font-size: 12pt;
                  font-family: Helvetica; font-weight: bold;">Signing
                  messages</span></font></b><font face="Helvetica"><span
                style="font-family: Helvetica;"> is important because it
                provides a mechanism to ensure that the entity making
                the API call (and presenting an access token) is really
                the entity that is allowed to make the API call.</span></font><o:p></o:p></li>
        </ul>
        <p class="MsoNormal"><font color="black" face="Helvetica"
            size="3"><span style="font-size: 12pt; font-family:
              Helvetica;">Signing messages applies to the
              re-delegation use cases. I've heard the need for this
              class of use cases from
              both the hData (health data) community as well as the user
              managed access (UMA)
              community.<br>
              <br>
              Signing tokens covers both your second class of tokens as
              well as another use
              case that Eran has mentioned as well. Namely, a protected
              resource server
              honoring tokens from multiple Authorization Servers.<br>
              <br>
              These are the two classes of use cases that I'd like to
              see solved.<br>
              <br>
              Thanks,<br>
              George<br>
              <br>
              <br>
              O</span></font>n 9/28/10 12:58 AM, David Recordon wrote: <o:p></o:p></p>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">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></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;"><o:p>&nbsp;</o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">From what
                I've seen there are two distinct classes of
                signature use cases.<o:p></o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">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 want
                to make sure that the HTTP POST your server just
                received isn't masquerading
                itself as a GET.<o:p></o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">2) The
                second is&nbsp;where the HTTP request is
                orthogonal. 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></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;"><o:p>&nbsp;</o:p></span></font></p>
        </div>
        <meta charset="utf-8">
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">The main
                practical example I have of the first use
                case is what Twitter wants 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 signature to TwitPic for it to include in
                the final API request
                to Twitter.<o:p></o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;"><o:p>&nbsp;</o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">In terms of
                signing protected resource requests, I
                haven't heard anyone bring up specific and detailed
                needs for this recently.<o:p></o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;"><o:p>&nbsp;</o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">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 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="http://developers.facebook.com/docs/authentication/canvas"
                  moz-do-not-send="true">http://developers.facebook.com/docs/authentication/canvas</a><o:p></o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;"><o:p>&nbsp;</o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">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 relying on public key algorithms.<o:p></o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;"><o:p>&nbsp;</o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">So a few
                questions:<o:p></o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">&nbsp;* Do we
                want to tackle both of these classes of
                signatures in OAuth?<o:p></o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">&nbsp;* Why do
                you consider the second class part of
                OAuth versus something completely separate that might
                happen to include an
                OAuth access token?<o:p></o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">&nbsp;* Is the
                Twitter redelegation use case the right
                focus for the first class?<o:p></o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">&nbsp;* Is there
                an example of an OAuth 2.0 server
                that can't use bearer tokens for protected resource
                requests and thus requires
                signatures?<o:p></o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;"><o:p>&nbsp;</o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">Thanks,<o:p></o:p></span></font></p>
        </div>
        <div>
          <p class="MsoNormal"><font color="black" face="Times New
              Roman" size="3"><span style="font-size: 12pt;">--David<o:p></o:p></span></font></p>
        </div>
        <pre wrap=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt;"><o:p>&nbsp;</o:p></span></font></pre>
        <pre><fieldset class="mimeAttachmentHeader"></fieldset><font color="black" face="Courier New" size="2"><span style="font-size: 10pt;"><o:p>&nbsp;</o:p></span></font></pre>
        <pre><font color="black" face="Courier New" size="2"><span style="font-size: 10pt;">_______________________________________________<o:p></o:p></span></font></pre>
        <pre><font color="black" face="Courier New" size="2"><span style="font-size: 10pt;">OAuth mailing list<o:p></o:p></span></font></pre>
        <pre><font color="black" face="Courier New" size="2"><span style="font-size: 10pt;"><a moz-do-not-send="true" href="mailto:OAuth@ietf.org">OAuth@ietf.org</a><o:p></o:p></span></font></pre>
        <pre><font color="black" face="Courier New" size="2"><span style="font-size: 10pt;"><a moz-do-not-send="true" href="https://www.ietf.org/mailman/listinfo/oauth">https://www.ietf.org/mailman/listinfo/oauth</a><o:p></o:p></span></font></pre>
        <p class="MsoNormal" style="margin-bottom: 12pt;"><font
            color="black" face="Times New Roman" size="3"><span
              style="font-size: 12pt;"><o:p>&nbsp;</o:p></span></font></p>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------010205030904060000090408--
