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 4EE4B3A6E42 for <oauth@core3.amsl.com>;
 Mon,  4 Oct 2010 11:28:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.708
X-Spam-Level: 
X-Spam-Status: No, score=-1.708 tagged_above=-999 required=5 tests=[AWL=0.890,
 BAYES_00=-2.599, 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 bSUJdwmU9GFO for
 <oauth@core3.amsl.com>; Mon,  4 Oct 2010 11:28:01 -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 A10F93A704E for <oauth@ietf.org>;
 Mon,  4 Oct 2010 11:28:00 -0700 (PDT)
Received: from mtaout-db04.r1000.mx.aol.com (mtaout-db04.r1000.mx.aol.com
 [172.29.51.196]) by imr-db03.mx.aol.com (8.14.1/8.14.1) with ESMTP id
 o94ISEkm000836; Mon, 4 Oct 2010 14:28:14 -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-db04.r1000.mx.aol.com (MUA/Third Party Client Interface) with ESMTPSA
 id EC463E00014D; Mon,  4 Oct 2010 14:28:13 -0400 (EDT)
Message-ID: <4CAA1CBB.80001@aol.com>
Date: Mon, 04 Oct 2010 14:28:11 -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: "Freeman, Tim" <tim.freeman@hp.com>
References: <AANLkTimERshG-ndU8_uc0NJhx6ree6d8kxYj=EVeHpmA@mail.gmail.com>	<4CA20BFC.90704@aol.com>	<5710F82C0E73B04FA559560098BF95B124FB233412@USNAVSXCHMBSA3.ndc.alcatel-lucent.com>
 <4CA9FEAC.8090407@aol.com>
 <59DD1BA8FD3C0F4C90771C18F2B5B53A653964AD76@GVW0432EXB.americas.hpqcorp.net>
In-Reply-To: <59DD1BA8FD3C0F4C90771C18F2B5B53A653964AD76@GVW0432EXB.americas.hpqcorp.net>
Content-Type: multipart/alternative;
 boundary="------------030008040104020909070507"
x-aol-global-disposition: G
X-AOL-SCOLL-SCORE: 0:2:447038208:93952408  
X-AOL-SCOLL-URL_COUNT: 0  
x-aol-sid: 3039ac1d33c44caa1cbd3693
X-AOL-IP: 10.181.183.108
Cc: "Zeltsan, Zachary \(Zachary\)" <zachary.zeltsan@alcatel-lucent.com>,
 OAuth WG <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Signatures don't solve that problem (was RE:
 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 18:28:04 -0000

This is a multi-part message in MIME format.
--------------030008040104020909070507
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

  Hi Tim,

Thanks for the feedback. Some comments/questions inline...

On 10/4/10 1:59 PM, Freeman, Tim wrote:
>
> Putting the use cases on the table is good because it makes things 
> much clearer.  Unfortunately, it's clear that this use case does not work.
>
> I'd like to number the steps under "Requirements" so I can refer to 
> them unambiguously:
>
> 1. The application at www.sleepwell.example.com 
> <http://www.sleepwell.example.com> accesses www.myhealth.example.com 
> <http://www.myhealth.example.com> to discover the location of the PCP 
> system (XRD discovery)
> 2. The application at www.sleepwell.example.com 
> <http://www.sleepwell.example.com> requests Alice to authorize access 
> to the application at www.pcp.example.com <http://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.
> 3. The application at www.myhealth.example.com 
> <http://www.myhealth.example.com> issues a token bound to 
> www.sleepwell.example.com <http://www.sleepwell.example.com> for 
> access to the application at www.pcp.example.com 
> <http://www.pcp.example.com>. Note that a signed token (JWT) can be 
> used to prove who issued the token.
> 4. The application at www.sleepwell.example.com 
> <http://www.sleepwell.example.com> constructs a request (includes the 
> token issued by www.myhealth.example.com 
> <http://www.myhealth.example.com>) to the application at 
> www.pcp.example.com <http://www.pcp.example.com>
> 5. The application at www.sleepwell.example.com 
> <http://www.sleepwell.example.com> signs the request before sending it 
> to www.pcp.example.com <http://www.pcp.example.com>
> 6. The application at www.pcp.example.com <http://www.pcp.example.com> 
> receives the request and verifies the signature
> 7. The application at www.pcp.example.com <http://www.pcp.example.com> 
> parses the message and finds the authorization token
> 8. The application at www.pcp.example.com <http://www.pcp.example.com> 
> verifies the signature of the authorization token
> 9. The application at www.pcp.example.com <http://www.pcp.example.com> 
> parses the authorization token and verifies that this token was issued 
> to the application at www.sleepwell.com <http://www.sleepwell.com>
> 10. The application at www.pcp.example.com 
> <http://www.pcp.example.com> retrieves the requested data and returns 
> it to the application at www.sleepwell.example.com 
> <http://www.sleepwell.example.com>
>
> The stated purpose of signatures is:
>
> >The application at www.pcp.example.com <http://www.pcp.example.com> 
> verifies that Alice has authorized
>
> >www.sleepwell.example.com <http://www.sleepwell.example.com> to access 
> her health data as well as enforces
>
> >that www.sleepwell.example.com <http://www.sleepwell.example.com> is 
> the only application that can retrieve that
>
> >data with that specific authorization.
>
> I'll abbreviate domain names like "www.sleepwell.example.com" to 
> "sleepwell".
>
> Bearer tokens work fine when verifying that Alice has authorized 
> sleepwell <http://www.sleepwell.example.com> to access her health 
> data, so the claim is apparently that signatures give the added 
> benefit of enforcing that sleepwell <http://www.sleepwell.example.com> 
> is the only application that can retrieve that data with that specific 
> authorization.
>
I suppose this depends on how you define "work fine". While the 
authorization token issued by myhealthdata and given to sleepwell to 
present to pcp can be passed as a bearer token (so in that sense it 
works fine) there is no security around the token. In the case of health 
data, just possession of an autorization token is NOT good enough to 
grant access.

Instead the PCP site needs to ensure that the presenting entity is 
specifically authorized by the Authorization Server. I contend that to 
establish this "chain of trust" signatures are needed.

Given that in most cases pcp will want to decode the token itself, it 
will need some form of signed structured token because pcp is the 
recipient of the token and not the issuer.

> Unfortunately, signatures do not do that.  Suppose sleepwell wanted to 
> give Alice's data to apneacheck.  Sleepwell could follow the protocol 
> up to step 4.  Then, instead of signing the request and sending the 
> signed request to pcp, sleepwell could transmit the signed request to 
> apneacheck.  apneacheck could then complete the protocol and get 
> Alice's data from www.pcp.example.com.
>
Maybe I wasn't clear in the use case. The point of signatures is not to 
enable authorization but to ensure that release of data only happens 
within the context that was authorized by the user. Let's take the flip 
side where signatures are not used. Any site with access to the bearer 
token issued to sleepwell has access to the Alice's data at the PCP. 
This is not acceptable with sensitive data.

So the point of signatures in this use case is to create a binding 
between the issuer of the token (myhealthdata), the presenter of the 
token (sleepwell) and the receiver of the token (pcp).

If sleepwell signs the message sent to pcp, then pcp can verify that 
sleepwell is the sender of the message. Next, if the message contains a 
token signed by myhealth data, and that token includes a claim that the 
token is issued to sleepwell. PCP can "connect the dots" and know that 
this is a valid request.

If the token is sent by another server, the "issued to" claim will not 
match the entity that signed the message and the PCP application will 
reject the request.
>
> If sleepwell has can retrive to Alice's data, and the protocol doesn't 
> mandate an invasive control of sleepwell's computation and outputs, 
> it's hopeless to prevent sleepwell from allowing apneacheck to 
> retrieve Alice's data.  If all else fails, sleepwell could access 
> Alice's data itself and then allow apneacheck to access the data from 
> sleepwell.
>
So I'll concede that once sleepwell has the data, if sleepwell is not 
trustworthy, there is little Alice can do to protect her data. Maybe 
laws and other such mechanisms will be developed to deal with this 
scenario. This is one reason why it's so important for the PCP to only 
release data to the specific entity that was authorized. This is not 
possible with bearer tokens in a delegated use case like this one.
>
> For all I know, signatures might be a solution to some problem, but 
> they aren't a solution to this problem.
>
> Tim Freeman
> Email: tim.freeman@hp.com <mailto:tim.freeman@hp.com>
> Desk in Palo Alto: (650) 857-2581
> Home: (408) 774-1298
> Cell: (408) 348-7536
>
> *From:* oauth-bounces@ietf.org [mailto:oauth-bounces@ietf.org] *On 
> Behalf Of *George Fletcher
> *Sent:* Monday, October 04, 2010 9:20 AM
> *To:* Zeltsan, Zachary (Zachary)
> *Cc:* OAuth WG
> *Subject:* Re: [OAUTH-WG] Signatures...what are we trying to solve?
>
> 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 
> <http://www.myhealth.example.com>). Alice's Primary Care Physician 
> (www.pcp.example.com <http://www.pcp.example.com>) recommends that 
> Alice see a sleep specialist (www.sleepwell.example.com 
> <http://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 
> <http://www.pcp.example.com> verifies that Alice has authorized 
> www.sleepwell.example.com <http://www.sleepwell.example.com> to access 
> her health data as well as enforces that www.sleepwell.example.com 
> <http://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 
> <http://www.myhealth.example.com> manages authorization of access to 
> Alice's participating health systems
> * The application at www.myhealth.example.com 
> <http://www.myhealth.example.com> can issues authorization tokens 
> understood by Alice's participating health systems
> * The application at www.pcp.example.com <http://www.pcp.example.com> 
> stores Alice's basic health and prescription records
> * The application at www.sleepwell.com <http://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 <http://www.pcp.example.com>) to the sleep 
> specialist (www.sleepwell.example.com <http://www.sleepwell.example.com>).
> * The transfer of health data only occurs if the application at 
> www.pcp.example.com <http://www.pcp.example.com> can verify that 
> www.sleepwell.example.com <http://www.sleepwell.example.com> is the 
> party requesting access and that the authorization token presented by 
> www.sleepwell.example.com <http://www.sleepwell.example.com> is issued 
> by the application at www.myhealth.example.com 
> <http://www.myhealth.example.com> with a restricted audience of 
> www.sleepwell.example.com <http://www.sleepwell.example.com>
>
> Requirements:
> 1. The application at www.sleepwell.example.com 
> <http://www.sleepwell.example.com> accesses www.myhealth.example.com 
> <http://www.myhealth.example.com> to discover the location of the PCP 
> system (XRD discovery)
> 2. The application at www.sleepwell.example.com 
> <http://www.sleepwell.example.com> requests Alice to authorize access 
> to the application at www.pcp.example.com <http://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.
> 3. The application at www.myhealth.example.com 
> <http://www.myhealth.example.com> issues a token bound to 
> www.sleepwell.example.com <http://www.sleepwell.example.com> for 
> access to the application at www.pcp.example.com 
> <http://www.pcp.example.com>. Note that a signed token (JWT) can be 
> used to prove who issued the token.
> 4. The application at www.sleepwell.example.com 
> <http://www.sleepwell.example.com> constructs a request (includes the 
> token issued by www.myhealth.example.com 
> <http://www.myhealth.example.com>) to the application at 
> www.pcp.example.com <http://www.pcp.example.com>
> 5. The application at www.sleepwell.example.com 
> <http://www.sleepwell.example.com> signs the request before sending it 
> to www.pcp.example.com <http://www.pcp.example.com>
> 6. The application at www.pcp.example.com <http://www.pcp.example.com> 
> receives the request and verifies the signature
> 7. The application at www.pcp.example.com <http://www.pcp.example.com> 
> parses the message and finds the authorization token
> 8. The application at www.pcp.example.com <http://www.pcp.example.com> 
> verifies the signature of the authorization token
> 9. The application at www.pcp.example.com <http://www.pcp.example.com> 
> parses the authorization token and verifies that this token was issued 
> to the application at www.sleepwell.com <http://www.sleepwell.com>
> 10. The application at www.pcp.example.com 
> <http://www.pcp.example.com> retrieves the requested data and returns 
> it to the application at www.sleepwell.example.com 
> <http://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> 
> [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
>

-- 
Chief Architect                   AIM:  gffletch
Identity Services Engineering     Work: george.fletcher@teamaol.com
AOL Inc.                          Home: gffletch@aol.com
Mobile: +1-703-462-3494           Blog: http://practicalid.blogspot.com
Office: +1-703-265-2544           Twitter: http://twitter.com/gffletch


--------------030008040104020909070507
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    <font face="Helvetica, Arial, sans-serif">Hi Tim,<br>
      <br>
      Thanks for the feedback. Some comments/questions inline...<br>
    </font><br>
    On 10/4/10 1:59 PM, Freeman, Tim wrote:
    <blockquote
cite="mid:59DD1BA8FD3C0F4C90771C18F2B5B53A653964AD76@GVW0432EXB.americas.hpqcorp.net"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator" content="Microsoft Word 12 (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:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@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;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
	{font-family:"Times New\000D\000A              Roman";
	panose-1:0 0 0 0 0 0 0 0 0 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
pre
	{mso-style-priority:99;
	mso-style-link:"HTML Preformatted Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";
	color:black;}
span.HTMLPreformattedChar
	{mso-style-name:"HTML Preformatted Char";
	mso-style-priority:99;
	mso-style-link:"HTML Preformatted";
	font-family:Consolas;
	color:black;}
span.EmailStyle19
	{mso-style-type:personal;
	font-family:"Arial","sans-serif";
	color:navy;}
span.EmailStyle20
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:595.3pt 841.9pt;
	margin:1.0in 1.25in 1.0in 1.25in;}
div.WordSection1
	{page:WordSection1;}
 /* List Definitions */
 @list l0
	{mso-list-id:1077285682;
	mso-list-template-ids:1441661176;}
@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="WordSection1">
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">Putting the use cases on the table is good
            because it makes
            things much clearer.  Unfortunately, it's clear that this
            use case does
            not work.<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">I'd like to number the steps under "Requirements"
            so I
            can refer to them unambiguously:<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);"> <o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">1. The application at <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            accesses <a moz-do-not-send="true"
              href="http://www.myhealth.example.com">www.myhealth.example.com</a>
            to discover the location of the PCP system (XRD discovery)<br>
            2. The application at <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            requests Alice to authorize access to the application at <a
              moz-do-not-send="true" 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>
            3. The application at <a moz-do-not-send="true"
              href="http://www.myhealth.example.com">www.myhealth.example.com</a>
            issues a token bound to <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            for access to the application at <a moz-do-not-send="true"
              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>
            4. The application at <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            constructs a request (includes the token issued by <a
              moz-do-not-send="true"
              href="http://www.myhealth.example.com">www.myhealth.example.com</a>)
            to the
            application at <a moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a><br>
            5. The application at <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            signs the request before sending it to <a
              moz-do-not-send="true" href="http://www.pcp.example.com">www.pcp.example.com</a><br>
            6. The application at <a moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a>
            receives the request and verifies the signature<br>
            7. The application at <a moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a>
            parses the message and finds the authorization token<br>
            8. The application at <a moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a>
            verifies the signature of the authorization token<br>
            9. The application at <a moz-do-not-send="true"
              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 moz-do-not-send="true"
              href="http://www.sleepwell.com">www.sleepwell.com</a><br>
            10. The application at <a moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a>
            retrieves the requested data and returns it to the
            application at <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a><br>
            <br>
            <o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">The stated purpose of signatures is:<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">&gt;The application at <a moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a>
            verifies that Alice has authorized <o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">&gt;<a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            to access her health data as well as enforces <o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">&gt;that <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            is the only application that can retrieve that <o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">&gt;data with that specific authorization.<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">I'll abbreviate domain names like
            "<a class="moz-txt-link-abbreviated" href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>"
            to "sleepwell".<br>
            <br>
            <o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">Bearer tokens work fine when verifying that Alice
            has authorized
             <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">sleepwell</a> to
            access her
            health data, so the claim is apparently that signatures give
            the added benefit
            of enforcing that <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">sleepwell</a> is
            the only application that can retrieve that data with that
            specific
            authorization.</span></p>
      </div>
    </blockquote>
    I suppose this depends on how you define "work fine". While the
    authorization token issued by myhealthdata and given to sleepwell to
    present to pcp can be passed as a bearer token (so in that sense it
    works fine) there is no security around the token. In the case of
    health data, just possession of an autorization token is NOT good
    enough to grant access. <br>
    <br>
    Instead the PCP site needs to ensure that the presenting entity is
    specifically authorized by the Authorization Server. I contend that
    to establish this "chain of trust" signatures are needed.<br>
    <br>
    Given that in most cases pcp will want to decode the token itself,
    it will need some form of signed structured token because pcp is the
    recipient of the token and not the issuer.<br>
    <br>
    <blockquote
cite="mid:59DD1BA8FD3C0F4C90771C18F2B5B53A653964AD76@GVW0432EXB.americas.hpqcorp.net"
      type="cite">
      <div class="WordSection1">
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">Unfortunately, signatures do not do that. 
            Suppose sleepwell
            wanted to give Alice's data to apneacheck.  Sleepwell could
            follow the
            protocol up to step 4.  Then, instead of signing the request
            and sending
            the signed request to pcp, sleepwell could transmit the
            signed request to apneacheck. 
            apneacheck could then complete the protocol and get Alice's
            data from
            <a class="moz-txt-link-abbreviated" href="http://www.pcp.example.com">www.pcp.example.com</a>.</span></p>
      </div>
    </blockquote>
    Maybe I wasn't clear in the use case. The point of signatures is not
    to enable authorization but to ensure that release of data only
    happens within the context that was authorized by the user. Let's
    take the flip side where signatures are not used. Any site with
    access to the bearer token issued to sleepwell has access to the
    Alice's data at the PCP. This is not acceptable with sensitive data.<br>
    <br>
    So the point of signatures in this use case is to create a binding
    between the issuer of the token (myhealthdata), the presenter of the
    token (sleepwell) and the receiver of the token (pcp).<br>
    <br>
    If sleepwell signs the message sent to pcp, then pcp can verify that
    sleepwell is the sender of the message. Next, if the message
    contains a token signed by myhealth data, and that token includes a
    claim that the token is issued to sleepwell. PCP can "connect the
    dots" and know that this is a valid request.<br>
    <br>
    If the token is sent by another server, the "issued to" claim will
    not match the entity that signed the message and the PCP application
    will reject the request.<br>
    <blockquote
cite="mid:59DD1BA8FD3C0F4C90771C18F2B5B53A653964AD76@GVW0432EXB.americas.hpqcorp.net"
      type="cite">
      <div class="WordSection1">
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">If sleepwell has can retrive to Alice's data, and
            the protocol
            doesn't mandate an invasive control of sleepwell's
            computation and outputs, it's
            hopeless to prevent sleepwell from allowing apneacheck to
            retrieve Alice's data. 
            If all else fails, sleepwell could access Alice's data
            itself and then allow
            apneacheck to access the data from sleepwell.</span></p>
      </div>
    </blockquote>
    So I'll concede that once sleepwell has the data, if sleepwell is
    not trustworthy, there is little Alice can do to protect her data.
    Maybe laws and other such mechanisms will be developed to deal with
    this scenario. This is one reason why it's so important for the PCP
    to only release data to the specific entity that was authorized.
    This is not possible with bearer tokens in a delegated use case like
    this one.<br>
    <blockquote
cite="mid:59DD1BA8FD3C0F4C90771C18F2B5B53A653964AD76@GVW0432EXB.americas.hpqcorp.net"
      type="cite">
      <div class="WordSection1">
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);"> <o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">For all I know, signatures might be a solution to
            some problem,
            but they aren't a solution to this problem.<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);"><o:p> </o:p></span></p>
        <div>
          <p class="MsoNormal"><span style="font-size: 10pt; color:
              rgb(31, 73, 125);">Tim Freeman<br>
              Email: <a moz-do-not-send="true"
                href="mailto:tim.freeman@hp.com">tim.freeman@hp.com</a><br>
              Desk in Palo Alto: (650) 857-2581<br>
              Home: (408) 774-1298<br>
              Cell: (408) 348-7536<o:p></o:p></span></p>
        </div>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);"><o:p> </o:p></span></p>
        <div>
          <div style="border-right: medium none; border-width: 1pt
            medium medium; border-style: solid none none; border-color:
            rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color;
            padding: 3pt 0in 0in;">
            <p class="MsoNormal"><b><span style="font-size: 10pt;
                  font-family:
                  &quot;Tahoma&quot;,&quot;sans-serif&quot;; color:
                  windowtext;">From:</span></b><span style="font-size:
                10pt; font-family:
                &quot;Tahoma&quot;,&quot;sans-serif&quot;; 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>On Behalf Of </b>George
                Fletcher<br>
                <b>Sent:</b> Monday, October 04, 2010 9:20 AM<br>
                <b>To:</b> Zeltsan, Zachary (Zachary)<br>
                <b>Cc:</b> OAuth WG<br>
                <b>Subject:</b> Re: [OAUTH-WG] Signatures...what are we
                trying to solve?<o:p></o:p></span></p>
          </div>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;">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>
            Use case: Signed Messages<br>
            <br>
            Description:<br>
            <br>
            Alice manages all her personal health records in her
            personal health data store
            (<a moz-do-not-send="true"
              href="http://www.myhealth.example.com">www.myhealth.example.com</a>).
Alice's
            Primary Care Physician (<a moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a>)
            recommends that Alice see a sleep specialist (<a
              moz-do-not-send="true"
              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
              moz-do-not-send="true" href="http://www.pcp.example.com">www.pcp.example.com</a>
            verifies that Alice
            has authorized <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            to access her health data as well as enforces that <a
              moz-do-not-send="true"
              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 moz-do-not-send="true"
              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 moz-do-not-send="true"
              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 moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a>
            stores Alice's basic health and prescription records<br>
            * The application at <a moz-do-not-send="true"
              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
              moz-do-not-send="true" href="http://www.pcp.example.com">www.pcp.example.com</a>)
            to the sleep
            specialist (<a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>).<br>
            * The transfer of health data only occurs if the application
            at <a moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a>
            can verify that <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            is the
            party requesting access and that the authorization token
            presented by <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            is issued
            by the application at <a moz-do-not-send="true"
              href="http://www.myhealth.example.com">www.myhealth.example.com</a>
            with a restricted audience of <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a><br>
            <br>
            Requirements:<br>
          </span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">1.</span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;"> The
            application at <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            accesses <a moz-do-not-send="true"
              href="http://www.myhealth.example.com">www.myhealth.example.com</a>
            to discover
            the location of the PCP system (XRD discovery)<br>
          </span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">2.</span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;"> The
            application at <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            requests
            Alice to authorize access to the application at <a
              moz-do-not-send="true" 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>
          </span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">3.</span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;"> The
            application at <a moz-do-not-send="true"
              href="http://www.myhealth.example.com">www.myhealth.example.com</a>
            issues a
            token bound to <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            for access to the application at <a moz-do-not-send="true"
              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>
          </span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">4.</span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;"> The
            application at <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            constructs a request (includes the token issued by <a
              moz-do-not-send="true"
              href="http://www.myhealth.example.com">www.myhealth.example.com</a>)
            to the
            application at <a moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a><br>
          </span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">5. </span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;">The
            application at <a moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a>
            signs the
            request before sending it to <a moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a><br>
          </span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">6.</span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;"> The
            application at <a moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a>
            receives the request
            and verifies the signature<br>
          </span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">7.</span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;"> The
            application at <a moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a>
            parses the message
            and finds the authorization token<br>
          </span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">8.</span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;"> The
            application at <a moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a>
            verifies the
            signature of the authorization token<br>
          </span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">9.</span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;"> The
            application at <a moz-do-not-send="true"
              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 moz-do-not-send="true"
              href="http://www.sleepwell.com">www.sleepwell.com</a><br>
          </span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);">10.</span><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;"> The
            application at <a moz-do-not-send="true"
              href="http://www.pcp.example.com">www.pcp.example.com</a>
            retrieves the
            requested data and returns it to the application at <a
              moz-do-not-send="true"
              href="http://www.sleepwell.example.com">www.sleepwell.example.com</a><br>
            <br>
          </span><br>
          <br>
          On 9/28/10 12:27 PM, Zeltsan, Zachary (Zachary) wrote: <o:p></o:p></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Arial&quot;,&quot;sans-serif&quot;; 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>.</span><o:p></o:p></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Arial&quot;,&quot;sans-serif&quot;; color: navy;">Could
            you write them up?</span><o:p></o:p></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Arial&quot;,&quot;sans-serif&quot;; color: navy;"> </span><o:p></o:p></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Arial&quot;,&quot;sans-serif&quot;; color: navy;">Thanks,</span><o:p></o:p></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Arial&quot;,&quot;sans-serif&quot;; color: navy;">Zachary</span><o:p></o:p></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Arial&quot;,&quot;sans-serif&quot;; color: navy;"> </span><o:p></o:p></p>
        <div>
          <div class="MsoNormal" style="text-align: center;"
            align="center"><span style="color: windowtext;">
              <hr align="center" size="2" width="100%">
            </span></div>
          <p class="MsoNormal"><b><span style="font-size: 10pt;
                font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;
                color: windowtext;">From:</span></b><span
              style="font-size: 10pt; font-family:
              &quot;Tahoma&quot;,&quot;sans-serif&quot;; color:
              windowtext;"> <a moz-do-not-send="true"
                href="mailto:oauth-bounces@ietf.org">oauth-bounces@ietf.org</a>
              [<a moz-do-not-send="true"
                href="mailto:oauth-bounces@ietf.org">mailto:oauth-bounces@ietf.org</a>]
              <b>On
                Behalf Of </b>George Fletcher<br>
              <b>Sent:</b> Tuesday, September 28, 2010 11:39 AM<br>
              <b>To:</b> OAuth WG<br>
              <b>Subject:</b> Re: [OAUTH-WG] Signatures...what are we
              trying to solve?</span><o:p></o:p></p>
        </div>
        <p class="MsoNormal"> <o:p></o:p></p>
        <p class="MsoNormal"><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;">I think
            of the signature issues as falling into two classes... I
            think they map to your
            classification as well...</span><o:p></o:p></p>
        <ul style="margin-top: 0in;" type="disc">
          <li class="MsoNormal" style=""><b><span style="font-family:
                &quot;Helvetica&quot;,&quot;sans-serif&quot;;">Signing
                tokens</span></b><span style="font-family:
              &quot;Helvetica&quot;,&quot;sans-serif&quot;;"> is
              important for interoperability especially looking forward
              to a time when tokens issued by multiple Authorization
              Servers are accepted at a given host.</span><o:p></o:p></li>
          <li class="MsoNormal" style=""><b><span style="font-family:
                &quot;Helvetica&quot;,&quot;sans-serif&quot;;">Signing
                messages</span></b><span style="font-family:
              &quot;Helvetica&quot;,&quot;sans-serif&quot;;"> 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><o:p></o:p></li>
        </ul>
        <p class="MsoNormal"><span style="font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;">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>n 9/28/10 12:58 AM, David Recordon wrote: <o:p></o:p></p>
        <div>
          <p class="MsoNormal"><span style="">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.</span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style=""> </span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style="">From
              what I've seen there are two distinct classes of signature
              use cases.</span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style="">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.</span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style="">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.</span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style=""> </span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style="">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.</span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style=""> </span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style="">In
              terms of signing protected resource requests, I haven't
              heard anyone bring up
              specific and detailed needs for this recently.</span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style=""> </span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style="">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 moz-do-not-send="true"
                href="http://developers.facebook.com/docs/authentication/canvas">http://developers.facebook.com/docs/authentication/canvas</a></span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style=""> </span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style="">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.</span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style=""> </span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style="">So
              a few questions:</span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style=""> *
              Do we want to tackle both of these classes of signatures
              in OAuth?</span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style=""> *
              Why do you consider the second class part of OAuth versus
              something completely
              separate that might happen to include an OAuth access
              token?</span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style=""> *
              Is the Twitter redelegation use case the right focus for
              the first class?</span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style=""> *
              Is there an example of an OAuth 2.0 server that can't use
              bearer tokens for
              protected resource requests and thus requires signatures?</span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style=""> </span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style="">Thanks,</span><o:p></o:p></p>
        </div>
        <div>
          <p class="MsoNormal"><span style="">--David</span><o:p></o:p></p>
        </div>
        <pre> <o:p></o:p></pre>
        <pre> <o:p></o:p></pre>
        <pre>_______________________________________________<o:p></o:p></pre>
        <pre>OAuth mailing list<o:p></o:p></pre>
        <pre><a moz-do-not-send="true" href="mailto:OAuth@ietf.org">OAuth@ietf.org</a><o:p></o:p></pre>
        <pre><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></pre>
        <p class="MsoNormal" style="margin-bottom: 12pt;"> <o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
      </div>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Chief Architect                   AIM:  gffletch
Identity Services Engineering     Work: <a class="moz-txt-link-abbreviated" href="mailto:george.fletcher@teamaol.com">george.fletcher@teamaol.com</a>
AOL Inc.                          Home: <a class="moz-txt-link-abbreviated" href="mailto:gffletch@aol.com">gffletch@aol.com</a>
Mobile: +1-703-462-3494           Blog: <a class="moz-txt-link-freetext" href="http://practicalid.blogspot.com">http://practicalid.blogspot.com</a>
Office: +1-703-265-2544           Twitter: <a class="moz-txt-link-freetext" href="http://twitter.com/gffletch">http://twitter.com/gffletch</a>
</pre>
  </body>
</html>

--------------030008040104020909070507--
