Return-Path: <cmortimore@salesforce.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com
 (Postfix) with ESMTP id D5C711A01DA for <oauth@ietfa.amsl.com>;
 Sun, 13 Apr 2014 09:31:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.978
X-Spam-Level: 
X-Spam-Status: No,
 score=-1.978 tagged_above=-999 required=5 tests=[BAYES_00=-1.9,
 FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7,
 SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com
 [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DqV7D5P8Q0J0 for
 <oauth@ietfa.amsl.com>; Sun, 13 Apr 2014 09:31:44 -0700 (PDT)
Received: from mail-ob0-f169.google.com (mail-ob0-f169.google.com
 [209.85.214.169]) by ietfa.amsl.com (Postfix) with ESMTP id 67B581A01DC for
 <oauth@ietf.org>; Sun, 13 Apr 2014 09:31:44 -0700 (PDT)
Received: by mail-ob0-f169.google.com with SMTP id va2so8220170obc.0 for
 <oauth@ietf.org>; Sun, 13 Apr 2014 09:31:42 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net;
 s=20130820;
 h=x-gm-message-state:mime-version:in-reply-to:references:date
 :message-id:subject:from:to:cc:content-type;
 bh=GVPQENbfZVwwPxw1CxrCcT2Hd6nbdTQ+aH5vWorPMOg=;
 b=ZJL5Ypc7JCQTSn7w7W21XqbHrwWPXs54lOskohazFCKP51kMI/XWm4/Ei7DXppbeA8
 09UQFTBuozRqUGMjbmvzkJD0iprGCc/Uv3XagreGnJlWWtqMqAkn0y/MBnvbL5z+0aMT
 wDy+irrOK75Ef3pG2DUyaJXllmoGhpmB5GZIIwfvVm46tt6x6bxWcj1D3xFU7yBxwZ+/
 eqhRIJnHaLZ+uExwg6bN1J1hmESWhchE7dhs4JaL8UPo+EntJ5Th9EzjFOx2caqDpQ5y
 ExV1FZLxHa/QGcgQYJv8arfc/3sRbyS44WP4/3RjX5Hu5OS40kBlNrl606lvmZgWtPnQ yaWg==
X-Gm-Message-State: ALoCoQkIFx4dKHHCI96euoFQ0YD6gpehQFaunJ3TNFcl/6ZU64FRVt31P338XaBinCJ0iJf4LeZn
MIME-Version: 1.0
X-Received: by 10.60.160.173 with SMTP id xl13mr30574936oeb.19.1397406702084;
 Sun, 13 Apr 2014 09:31:42 -0700 (PDT)
Received: by 10.76.75.169 with HTTP; Sun, 13 Apr 2014 09:31:41 -0700 (PDT)
In-Reply-To: <C782E37A-A38D-4C12-8029-B5934ADA3977@ve7jtb.com>
References: <4E1F6AAD24975D4BA5B16804296739439A132083@TK5EX14MBXC286.redmond.corp.microsoft.com>
 <CA+wnMn_LBojNz+LCTTQN62P_U7Rag0rot715c7XCOcXAQJmEhA@mail.gmail.com>
 <4E1F6AAD24975D4BA5B16804296739439A155FFB@TK5EX14MBXC286.redmond.corp.microsoft.com>
 <CA+wnMn-Dto7ySgNgMu5rkqyzfok1BWdS7WxB18ep+Uv0sFRsuw@mail.gmail.com>
 <4E1F6AAD24975D4BA5B16804296739439A15609B@TK5EX14MBXC286.redmond.corp.microsoft.com>
 <C782E37A-A38D-4C12-8029-B5934ADA3977@ve7jtb.com>
Date: Sun, 13 Apr 2014 09:31:41 -0700
Message-ID: <CA+wnMn_LyO4wmhfuPYnNO87sq8c-p4zgpKbNqUnEYhJzvCpmhg@mail.gmail.com>
From: Chuck Mortimore <cmortimore@salesforce.com>
To: John Bradley <ve7jtb@ve7jtb.com>
Content-Type: multipart/alternative; boundary=089e011764e915b50404f6ef1ad7
Archived-At: http://mailarchive.ietf.org/arch/msg/oauth/yR4KUEidNLPUHr9BFWzbTheo6e8
Cc: "oauth@ietf.org" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Proof-Of-Possession Semantics for JSON Web Tokens
 (JWTs)
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/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: Sun, 13 Apr 2014 16:31:49 -0000

--089e011764e915b50404f6ef1ad7
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Yes - sounds about what I'm looking at

For the scenario, we'd have a client talking to our authorization server
that is also paired with it's own cloud backend.   The cloud would have a
certificate pre-reigstered with our authorization server, and the client
would dynamically generate it's own public/private key.    Both would be
able to prove possession using their own keys without sharing.    So to
answer mike's data structure question, it would looks something like this

1) Client requests id token and in the authorization request it passes in
its newly minted public key ( or perhaps a thumbprint but not covering that
here)

2) Authorization server authorizes, and mints new id token as jwk set
containing both the dynamically generated client key and also the cert for
its server:

{
     "iss": "https://login.salesforce.com",
     "sub": "
https://login.salesforce.com/id/00D30000001bZxaEAE/00530000009UVC0AAO"
     "aud":
"3MVG99OxTyEMCQ3gXuX31lysX3RQP4.Vj3EVzlMsVbxFvUe7VjZ0WcjWvGlAU7BPJFZBSyBGPi=
GyHhojZ2BE3",
     "exp": 1397352138,
     "iat": 1397352018,
     "cnf":
  {
"keys":[
{
"kty": "RSA",
"n": "AKPBc9I142dEc-Srdk5sz9MVaJH_k....",
"e": "AQAB",
"alg": "RS256"
},
{
"x5c":["MIIDQjCCAi...."]
}
]
}
}


The id token can then be presented to something like our oauth token
endpoint as an assertion by either the client application such as a mobile
app, or the server infrastructure it's paired with.   The client's key is
client specific.   The server's key is global for the application.  No need
to share between them, and the capabilities of the grant could vary.

Proof would simply be constructing a JWT that signs the id token with the
required key:
outerheader.base64url(innerheader.body.innersignature).outersignature

-cmort



On Sun, Apr 13, 2014 at 8:34 AM, John Bradley <ve7jtb@ve7jtb.com> wrote:

> I think Chuck is largely referring to the scenario that Connect supports
> for issuing id_tokens for 3rd parties but where the 3rd party also wants =
a
> access token to access the API.
>
> This is similar to the Google Play / NAAPS use case, but with access
> tokens using PoP back to the 1st party RS.
>
> Now using bearer tokens the native app can just pass the AT to a backend
> server hand have it make calls to the RS.  The AS is no wiser to the
> activity.
> However PoP is designed to stop this sort of thing.
>
> As I think Chuck intimated, you could share the private key between the
> app and the backend, but giving your servers private key to a app seems
> like a good way to loose it.
>
> The alternatives are:
> 1 share keys (bad)
> 2 put multiple proof keys in the token (needs the keys to be pre
> registered and ads complexity for symmetric keys.
> 3 Give client an assertion that can be used by the related backend to get
> it's own AT, allowing the clients to have different client_id and proof
> keys. (builds on Connect id_token used in jwt assertion flow)
>
> John B.
>
> On Apr 13, 2014, at 1:17 AM, Mike Jones <Michael.Jones@microsoft.com>
> wrote:
>
> Can you sketch out what data structures you'd ideally use for your
> scenario and what the elements mean?
>
> *From:* Chuck Mortimore [mailto:cmortimore@salesforce.com<cmortimore@sale=
sforce.com>
> ]
> *Sent:* Saturday, April 12, 2014 8:39 PM
> *To:* Mike Jones
> *Cc:* oauth@ietf.org
> *Subject:* Re: [OAUTH-WG] Proof-Of-Possession Semantics for JSON Web
> Tokens (JWTs)
>
> Not sure it it's common yet.   The scenario I'm exploring is a client tha=
t
> is paired with a server.     For example, a mobile app that's an OpenID
> Connect client that is sharing it's ID Token with the server.   Both the
> client and server want to be able to prove possession without sharing a
> private key.
>
> -cmort
>
>
> On Sat, Apr 12, 2014 at 8:32 PM, Mike Jones <Michael.Jones@microsoft.com>
> wrote:
> Is having multiple confirmation keys a common case?  I'd rather we "make
> simple things simple" than build the most general solution possible.  If =
an
> application really needs multiple confirmation keys, it can always define=
d
> a "jwks" element and the handling rules for it, and go for it...
>
>                                                             -- Mike
>
> *From:* Chuck Mortimore [mailto:cmortimore@salesforce.com]
> *Sent:* Saturday, April 12, 2014 6:12 PM
> *To:* Mike Jones
>
> *Cc:* oauth@ietf.org
> *Subject:* Re: [OAUTH-WG] Proof-Of-Possession Semantics for JSON Web
> Tokens (JWTs)
>
> Good start here Mike!
>
> One quick question - I see the "cnf" member is defined as a JWK.  Why not
> a JWK Set?    I could see use-cases for binding in multiple keys.
>
> -cmort
>
>
>
>
> On Tue, Apr 1, 2014 at 8:36 PM, Mike Jones <Michael.Jones@microsoft.com>
> wrote:
> I've written a concise Internet-Draft on proof-of-possession for JWTs wit=
h
> John Bradley and Hannes Tschofenig.  Quoting from the abstract:
>
> *This specification defines how to express a declaration in a JSON Web
> Token (JWT) that the presenter of the JWT possesses a particular key and
> that the recipient can cryptographically confirm proof-of-possession of t=
he
> key by the presenter. This property is also sometimes described as the
> presenter being a holder-of-key.*
>
> This specification intentionally does not specify the means of
> communicating the proof-of-possession JWT, nor the messages used to
> exercise the proof key, as these are necessarily application-specific.
> Rather, this specification defines a proof-of-possession JWT data structu=
re
> to be used by other specifications that do define those things.
>
> The specification is available at:
>
> =B7
> http://tools.ietf.org/html/draft-jones-oauth-proof-of-possession-00
>
> An HTML formatted version is available at:
>
> =B7
> http://self-issued.info/docs/draft-jones-oauth-proof-of-possession-00.htm=
l
>
>                                                             -- Mike
>
> P.S.  This note was also posted at http://self-issued.info/?p=3D1210 and =
as
> @selfissued.
>
>
>
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth
>
>
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth
>
>
>

--089e011764e915b50404f6ef1ad7
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Yes - sounds about what I&#39;m looking at<div><br></div><=
div>For the scenario, we&#39;d have a client talking to our authorization s=
erver that is also paired with it&#39;s own cloud backend. &nbsp; The cloud=
 would have a certificate pre-reigstered with our authorization server, and=
 the client would dynamically generate it&#39;s own public/private key. &nb=
sp; &nbsp;Both would be able to prove possession using their own keys witho=
ut sharing. &nbsp; &nbsp;So to answer mike&#39;s data structure question, i=
t would looks something like this<div>
<br></div><div>1) Client requests id token and in the authorization request=
 it passes in its newly minted public key ( or perhaps a thumbprint but not=
 covering that here)&nbsp;<br><br></div><div>2) Authorization server author=
izes, and mints new id token as jwk set containing both the dynamically gen=
erated client key and also the cert for its server:</div>
<div><br></div><div><div>{</div><div>&nbsp; &nbsp; &nbsp;&quot;iss&quot;: &=
quot;<a href=3D"https://login.salesforce.com">https://login.salesforce.com<=
/a>&quot;,</div><div>&nbsp; &nbsp; &nbsp;&quot;sub&quot;: &quot;<a href=3D"=
https://login.salesforce.com/id/00D30000001bZxaEAE/00530000009UVC0AAO">http=
s://login.salesforce.com/id/00D30000001bZxaEAE/00530000009UVC0AAO</a>&quot;=
</div>
<div>&nbsp; &nbsp; &nbsp;&quot;aud&quot;: &quot;3MVG99OxTyEMCQ3gXuX31lysX3R=
QP4.Vj3EVzlMsVbxFvUe7VjZ0WcjWvGlAU7BPJFZBSyBGPiGyHhojZ2BE3&quot;,</div><div=
>&nbsp; &nbsp; &nbsp;&quot;exp&quot;: 1397352138,</div><div>&nbsp; &nbsp; &=
nbsp;&quot;iat&quot;: 1397352018,</div><div>
&nbsp; &nbsp; &nbsp;&quot;cnf&quot;:</div><div><span class=3D"" style=3D"wh=
ite-space:pre">	</span>&nbsp;<span class=3D"" style=3D"white-space:pre">	</=
span>{</div><div><span class=3D"" style=3D"white-space:pre">			</span>&quot=
;keys&quot;:[</div><div><span class=3D"" style=3D"white-space:pre">				</sp=
an>{</div>
<div><span class=3D"" style=3D"white-space:pre">					</span>&quot;kty&quot;=
: &quot;RSA&quot;,</div><div><span class=3D"" style=3D"white-space:pre">			=
		</span>&quot;n&quot;: &quot;AKPBc9I142dEc-Srdk5sz9MVaJH_k....&quot;,</div=
><div>
<span class=3D"" style=3D"white-space:pre">					</span>&quot;e&quot;: &quot=
;AQAB&quot;,</div><div><span class=3D"" style=3D"white-space:pre">					</sp=
an>&quot;alg&quot;: &quot;RS256&quot;</div><div><span class=3D"" style=3D"w=
hite-space:pre">				</span>},</div>
<div><span class=3D"" style=3D"white-space:pre">				</span>{</div><div><spa=
n class=3D"" style=3D"white-space:pre">					</span>&quot;x5c&quot;:[&quot;M=
IIDQjCCAi....&quot;] &nbsp;<span class=3D"" style=3D"white-space:pre">			</=
span>&nbsp;&nbsp; &nbsp;&nbsp;</div>
<div><span class=3D"" style=3D"white-space:pre">				</span>}</div><div><spa=
n class=3D"" style=3D"white-space:pre">			</span>]</div><div><span class=3D=
"" style=3D"white-space:pre">		</span>}</div><div>}&nbsp;</div><div><br></d=
iv></div><div>
<br></div><div>The id token can then be presented to something like our oau=
th token endpoint as an assertion by either the client application such as =
a mobile app, or the server infrastructure it&#39;s paired with. &nbsp; The=
 client&#39;s key is client specific. &nbsp; The server&#39;s key is global=
 for the application. &nbsp;No need to share between them, and the capabili=
ties of the grant could vary.</div>
<div><br></div><div>Proof would simply be constructing a JWT that signs the=
 id token with the required key: outerheader.base64url(innerheader.body.inn=
ersignature).outersignature</div><div><br></div><div>-cmort</div><div><br>
</div></div></div><div class=3D"gmail_extra"><br><br><div class=3D"gmail_qu=
ote">On Sun, Apr 13, 2014 at 8:34 AM, John Bradley <span dir=3D"ltr">&lt;<a=
 href=3D"mailto:ve7jtb@ve7jtb.com" target=3D"_blank">ve7jtb@ve7jtb.com</a>&=
gt;</span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex"><div style=3D"word-wrap:break-word">I think =
Chuck is largely referring to the scenario that Connect supports for issuin=
g id_tokens for 3rd parties but where the 3rd party also wants a access tok=
en to access the API.<div>
<br></div><div>This is similar to the Google Play / NAAPS use case, but wit=
h access tokens using PoP back to the 1st party RS.</div><div><br></div><di=
v>Now using bearer tokens the native app can just pass the AT to a backend =
server hand have it make calls to the RS. &nbsp;The AS is no wiser to the a=
ctivity.</div>
<div>However PoP is designed to stop this sort of thing.</div><div><br></di=
v><div>As I think Chuck intimated, you could share the private key between =
the app and the backend, but giving your servers private key to a app seems=
 like a good way to loose it.</div>
<div><br></div><div>The alternatives are:</div><div>1 share keys (bad)</div=
><div>2 put multiple proof keys in the token (needs the keys to be pre regi=
stered and ads complexity for symmetric keys.</div><div>3 Give client an as=
sertion that can be used by the related backend to get it&#39;s own AT, all=
owing the clients to have different client_id and proof keys. (builds on Co=
nnect id_token used in jwt assertion flow)</div>
<div><br></div><div>John B.</div><div><div class=3D"h5"><div><br><div><div>=
On Apr 13, 2014, at 1:17 AM, Mike Jones &lt;<a href=3D"mailto:Michael.Jones=
@microsoft.com" target=3D"_blank">Michael.Jones@microsoft.com</a>&gt; wrote=
:</div>
<br><blockquote type=3D"cite"><div lang=3D"EN-US" link=3D"blue" vlink=3D"pu=
rple" style=3D"font-family:Helvetica;font-size:12px;font-style:normal;font-=
variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;=
text-align:start;text-indent:0px;text-transform:none;white-space:normal;wor=
d-spacing:0px">
<div><div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;=
Times New Roman&#39;,serif"><span style=3D"font-size:11pt;font-family:Calib=
ri,sans-serif;color:rgb(31,73,125)">Can you sketch out what data structures=
 you&rsquo;d ideally use for your scenario and what the elements mean?<u></=
u><u></u></span></div>
<div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times=
 New Roman&#39;,serif"><span style=3D"font-size:11pt;font-family:Calibri,sa=
ns-serif;color:rgb(31,73,125)">&nbsp;</span></div><div style=3D"margin:0in =
0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
<b><span style=3D"font-size:10pt;font-family:Tahoma,sans-serif">From:</span=
></b><span style=3D"font-size:10pt;font-family:Tahoma,sans-serif"><span>&nb=
sp;</span>Chuck Mortimore [<a href=3D"mailto:cmortimore@salesforce.com" tar=
get=3D"_blank">mailto:cmortimore@salesforce.com</a>]<span>&nbsp;</span><br>
<b>Sent:</b><span>&nbsp;</span>Saturday, April 12, 2014 8:39 PM<br><b>To:</=
b><span>&nbsp;</span>Mike Jones<br><b>Cc:</b><span>&nbsp;</span><a href=3D"=
mailto:oauth@ietf.org" target=3D"_blank">oauth@ietf.org</a><br><b>Subject:<=
/b><span>&nbsp;</span>Re: [OAUTH-WG] Proof-Of-Possession Semantics for JSON=
 Web Tokens (JWTs)<u></u><u></u></span></div>
<div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times=
 New Roman&#39;,serif"><u></u>&nbsp;<u></u></div><div><div style=3D"margin:=
0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif=
">Not sure it it&#39;s common yet. &nbsp; The scenario I&#39;m exploring is=
 a client that is paired with a server. &nbsp; &nbsp; For example, a mobile=
 app that&#39;s an OpenID Connect client that is sharing it&#39;s ID Token =
with the server. &nbsp; Both the client and server want to be able to prove=
 possession without sharing a private key. &nbsp;&nbsp;<u></u><u></u></div>
<div><div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;=
Times New Roman&#39;,serif"><u></u>&nbsp;<u></u></div></div><div><div style=
=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman=
&#39;,serif">
-cmort&nbsp;<u></u><u></u></div></div></div><div><p class=3D"MsoNormal" sty=
le=3D"margin:0in 0in 12pt;font-size:12pt;font-family:&#39;Times New Roman&#=
39;,serif"><u></u>&nbsp;<u></u></p><div><div style=3D"margin:0in 0in 0.0001=
pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
On Sat, Apr 12, 2014 at 8:32 PM, Mike Jones &lt;<a href=3D"mailto:Michael.J=
ones@microsoft.com" style=3D"color:purple;text-decoration:underline" target=
=3D"_blank">Michael.Jones@microsoft.com</a>&gt; wrote:<u></u><u></u></div><=
div>
<div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times=
 New Roman&#39;,serif"><span style=3D"font-size:11pt;font-family:Calibri,sa=
ns-serif;color:rgb(31,73,125)">Is having multiple confirmation keys a commo=
n case?&nbsp; I&rsquo;d rather we &ldquo;make simple things simple&rdquo; t=
han build the most general solution possible.&nbsp; If an application reall=
y needs multiple confirmation keys, it can always defined a &ldquo;jwks&rdq=
uo; element and the handling rules for it, and go for it&hellip;</span><u><=
/u><u></u></div>
<div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times=
 New Roman&#39;,serif"><span style=3D"font-size:11pt;font-family:Calibri,sa=
ns-serif;color:rgb(31,73,125)">&nbsp;</span><u></u><u></u></div><div style=
=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman=
&#39;,serif">
<span style=3D"font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,7=
3,125)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Mike</spa=
n><u></u><u></u></div><div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;=
font-family:&#39;Times New Roman&#39;,serif">
<span style=3D"font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,7=
3,125)">&nbsp;</span><u></u><u></u></div><div style=3D"margin:0in 0in 0.000=
1pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif"><b><span st=
yle=3D"font-size:10pt;font-family:Tahoma,sans-serif">From:</span></b><span =
style=3D"font-size:10pt;font-family:Tahoma,sans-serif"><span>&nbsp;</span>C=
huck Mortimore [mailto:<a href=3D"mailto:cmortimore@salesforce.com" style=
=3D"color:purple;text-decoration:underline" target=3D"_blank">cmortimore@sa=
lesforce.com</a>]<span>&nbsp;</span><br>
<b>Sent:</b><span>&nbsp;</span>Saturday, April 12, 2014 6:12 PM<br><b>To:</=
b><span>&nbsp;</span>Mike Jones</span><u></u><u></u></div><div><div style=
=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman=
&#39;,serif">
<br><b>Cc:</b><span>&nbsp;</span><a href=3D"mailto:oauth@ietf.org" style=3D=
"color:purple;text-decoration:underline" target=3D"_blank">oauth@ietf.org</=
a><br><b>Subject:</b><span>&nbsp;</span>Re: [OAUTH-WG] Proof-Of-Possession =
Semantics for JSON Web Tokens (JWTs)<u></u><u></u></div>
</div><div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39=
;Times New Roman&#39;,serif">&nbsp;<u></u><u></u></div><div><div style=3D"m=
argin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;=
,serif">
Good start here Mike!<u></u><u></u></div><div><div><div style=3D"margin:0in=
 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">&=
nbsp;<u></u><u></u></div></div><div><div style=3D"margin:0in 0in 0.0001pt;f=
ont-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
One quick question - I see the &quot;cnf&quot; member is defined as a JWK. =
&nbsp;Why not a JWK Set? &nbsp; &nbsp;I could see use-cases for binding in =
multiple keys.<u></u><u></u></div></div><div><div style=3D"margin:0in 0in 0=
.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">
&nbsp;<u></u><u></u></div></div><div><div style=3D"margin:0in 0in 0.0001pt;=
font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">-cmort<u></u><u=
></u></div></div><div><div><div style=3D"margin:0in 0in 0.0001pt;font-size:=
12pt;font-family:&#39;Times New Roman&#39;,serif">
&nbsp;<u></u><u></u></div></div><div><div style=3D"margin:0in 0in 0.0001pt;=
font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">&nbsp;<u></u><u=
></u></div></div></div></div></div><div><p class=3D"MsoNormal" style=3D"mar=
gin:0in 0in 12pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif=
">
&nbsp;<u></u><u></u></p><div><div style=3D"margin:0in 0in 0.0001pt;font-siz=
e:12pt;font-family:&#39;Times New Roman&#39;,serif">On Tue, Apr 1, 2014 at =
8:36 PM, Mike Jones &lt;<a href=3D"mailto:Michael.Jones@microsoft.com" styl=
e=3D"color:purple;text-decoration:underline" target=3D"_blank">Michael.Jone=
s@microsoft.com</a>&gt; wrote:<u></u><u></u></div>
<div><div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;=
Times New Roman&#39;,serif">I&rsquo;ve written a concise Internet-Draft on =
proof-of-possession for JWTs with John Bradley and Hannes Tschofenig.&nbsp;=
 Quoting from the abstract:<u></u><u></u></div>
<div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times=
 New Roman&#39;,serif">&nbsp;<u></u><u></u></div><div style=3D"margin:0in 0=
in 0.0001pt 0.5in;font-size:12pt;font-family:&#39;Times New Roman&#39;,seri=
f"><i>This specification defines how to express a declaration in a JSON Web=
 Token (JWT) that the presenter of the JWT possesses a particular key and t=
hat the recipient can cryptographically confirm proof-of-possession of the =
key by the presenter. This property is also sometimes described as the pres=
enter being a holder-of-key.</i><u></u><u></u></div>
<div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times=
 New Roman&#39;,serif">&nbsp;<u></u><u></u></div><div style=3D"margin:0in 0=
in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">Thi=
s specification intentionally does not specify the means of communicating t=
he proof-of-possession JWT, nor the messages used to exercise the proof key=
, as these are necessarily application-specific.&nbsp; Rather, this specifi=
cation defines a proof-of-possession JWT data structure to be used by other=
 specifications that do define those things.<u></u><u></u></div>
<div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times=
 New Roman&#39;,serif">&nbsp;<u></u><u></u></div><div style=3D"margin:0in 0=
in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">The=
 specification is available at:<u></u><u></u></div>
<p style=3D"margin-right:0in;margin-left:0in;font-size:12pt;font-family:&#3=
9;Times New Roman&#39;,serif"><span style=3D"font-family:Symbol">=B7</span>=
<span style=3D"font-size:7pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<sp=
an>&nbsp;</span></span><a href=3D"http://tools.ietf.org/html/draft-jones-oa=
uth-proof-of-possession-00" style=3D"color:purple;text-decoration:underline=
" target=3D"_blank">http://tools.ietf.org/html/draft-jones-oauth-proof-of-p=
ossession-00</a><u></u><u></u></p>
<div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times=
 New Roman&#39;,serif">&nbsp;<u></u><u></u></div><div style=3D"margin:0in 0=
in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif">An =
HTML formatted version is available at:<u></u><u></u></div>
<p style=3D"margin-right:0in;margin-left:0in;font-size:12pt;font-family:&#3=
9;Times New Roman&#39;,serif"><span style=3D"font-family:Symbol">=B7</span>=
<span style=3D"font-size:7pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<sp=
an>&nbsp;</span></span><a href=3D"http://self-issued.info/docs/draft-jones-=
oauth-proof-of-possession-00.html" style=3D"color:purple;text-decoration:un=
derline" target=3D"_blank">http://self-issued.info/docs/draft-jones-oauth-p=
roof-of-possession-00.html</a><u></u><u></u></p>
<div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times=
 New Roman&#39;,serif"><span style=3D"color:rgb(136,136,136)">&nbsp;</span>=
<u></u><u></u></div><div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;fo=
nt-family:&#39;Times New Roman&#39;,serif">
<span style=3D"color:rgb(136,136,136)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; -- Mike</span><u></u><u></u></div><div style=3D"margin:0=
in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times New Roman&#39;,serif"=
>
&nbsp;<u></u><u></u></div><div style=3D"margin:0in 0in 0.0001pt;font-size:1=
2pt;font-family:&#39;Times New Roman&#39;,serif">P.S.&nbsp; This note was a=
lso posted at<span>&nbsp;</span><a href=3D"http://self-issued.info/?p=3D121=
0" style=3D"color:purple;text-decoration:underline" target=3D"_blank">http:=
//self-issued.info/?p=3D1210</a><span>&nbsp;</span>and as @selfissued.<u></=
u><u></u></div>
<div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times=
 New Roman&#39;,serif">&nbsp;<u></u><u></u></div></div><p class=3D"MsoNorma=
l" style=3D"margin:0in 0in 12pt;font-size:12pt;font-family:&#39;Times New R=
oman&#39;,serif">
<br>_______________________________________________<br>OAuth mailing list<b=
r><a href=3D"mailto:OAuth@ietf.org" style=3D"color:purple;text-decoration:u=
nderline" target=3D"_blank">OAuth@ietf.org</a><br><a href=3D"https://www.ie=
tf.org/mailman/listinfo/oauth" style=3D"color:purple;text-decoration:underl=
ine" target=3D"_blank">https://www.ietf.org/mailman/listinfo/oauth</a><u></=
u><u></u></p>
</div><div style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39=
;Times New Roman&#39;,serif">&nbsp;<u></u><u></u></div></div></div></div><d=
iv style=3D"margin:0in 0in 0.0001pt;font-size:12pt;font-family:&#39;Times N=
ew Roman&#39;,serif">
<u></u>&nbsp;<u></u></div></div></div>_____________________________________=
__________<br>OAuth mailing list<br><a href=3D"mailto:OAuth@ietf.org" targe=
t=3D"_blank">OAuth@ietf.org</a><br><a href=3D"https://www.ietf.org/mailman/=
listinfo/oauth" target=3D"_blank">https://www.ietf.org/mailman/listinfo/oau=
th</a></div>
</blockquote></div><br></div></div></div></div></blockquote></div><br></div=
>

--089e011764e915b50404f6ef1ad7--

