Return-Path: <jpanzer@google.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 B8B773A6E0F for <oauth@core3.amsl.com>;
 Fri,  1 Oct 2010 17:11:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -105.41
X-Spam-Level: 
X-Spam-Status: No, score=-105.41 tagged_above=-999 required=5 tests=[AWL=-0.517,
 BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001,
 RCVD_IN_DNSWL_MED=-4, URIBL_RHS_DOB=1.083, USER_IN_WHITELIST=-100]
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 vyub5Jtq6VFl for
 <oauth@core3.amsl.com>; Fri,  1 Oct 2010 17:11:48 -0700 (PDT)
Received: from smtp-out.google.com (smtp-out.google.com [216.239.44.51]) by
 core3.amsl.com (Postfix) with ESMTP id D51BE3A6DF4 for <oauth@ietf.org>;
 Fri,  1 Oct 2010 17:11:47 -0700 (PDT)
Received: from hpaq12.eem.corp.google.com (hpaq12.eem.corp.google.com
 [172.25.149.12]) by smtp-out.google.com with ESMTP id o920CZGm024636 for
 <oauth@ietf.org>; Fri, 1 Oct 2010 17:12:36 -0700
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta;
 t=1285978356; bh=zErNSj+3O3PefQqc5PQWFs82zMY=;
 h=MIME-Version:In-Reply-To:References:From:Date:Message-ID:Subject: To:Cc:Content-Type;
 b=HPCJA/2TK5dK+ZCJJszbZ8FuIKnsVMHNmQHtUKUIUM1++Uo6p6KhdtQALGzJf2Vvi
 KhabsHTJrSEARGuTbAAOA==
Received: from pzk28 (pzk28.prod.google.com [10.243.19.156]) by
 hpaq12.eem.corp.google.com with ESMTP id o920CXjY009465 for <oauth@ietf.org>;
 Fri, 1 Oct 2010 17:12:34 -0700
Received: by pzk28 with SMTP id 28so2602000pzk.25 for <oauth@ietf.org>;
 Fri, 01 Oct 2010 17:12:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=beta;
 h=domainkey-signature:received:mime-version:received:in-reply-to
 :references:from:date:message-id:subject:to:cc:content-type;
 bh=2f/yeM6TlZTM/MG4YHMbem4PamsKT7hAOGckC9rcWEI=;
 b=vVYopbLazNuiSN5XFIyryKlY7KrTx+USeONNK29cb54tQrZHDyEtFuKJm2pofXFBTm
 YzUJxTHWDrgQSY5cs3oQ==
DomainKey-Signature: a=rsa-sha1; c=nofws; d=google.com; s=beta;
 h=mime-version:in-reply-to:references:from:date:message-id:subject:to
 :cc:content-type;
 b=sGxs8JhLyqFdcXiUbQaf7s4mmZI9aANmWTwP9TKw6fHlpWcz8+oGFN0x6xHsXWcvw2
 t0bLTJY44koBqFMgoXZw==
Received: by 10.142.249.16 with SMTP id w16mr5425392wfh.251.1285978352786;
 Fri, 01 Oct 2010 17:12:32 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.142.233.7 with HTTP; Fri, 1 Oct 2010 17:12:12 -0700 (PDT)
In-Reply-To: <AANLkTimokq-36Xt2hjrD1+Htj74d0L9jubg_c8=4sOXk@mail.gmail.com>
References: <4E1F6AAD24975D4BA5B168042967394314AA9AF0@TK5EX14MBXC207.redmond.corp.microsoft.com>
 <AANLkTimokq-36Xt2hjrD1+Htj74d0L9jubg_c8=4sOXk@mail.gmail.com>
From: John Panzer <jpanzer@google.com>
Date: Fri, 1 Oct 2010 17:12:12 -0700
Message-ID: <AANLkTi=Z0-7NAXGzhx45b1jQY=nq7Ttv8KRsxueSgPLr@mail.gmail.com>
To: Dirk Balfanz <balfanz@google.com>
Content-Type: multipart/alternative; boundary=00504502ca54e81cd10491972ac2
X-System-Of-Record: true
Cc: "oauth@ietf.org" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Comparing the JSON Token drafts
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: Sat, 02 Oct 2010 00:11:51 -0000

--00504502ca54e81cd10491972ac2
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

Quick note:

On Tue, Sep 28, 2010 at 10:23 AM, Dirk Balfanz <balfanz@google.com> wrote:

> On Mon, Sep 27, 2010 at 5:46 PM, Mike Jones <Michael.Jones@microsoft.com>=
wrote:
>
>>  Dirk and I both posted JSON Token drafts on Thursday.  They are at
>> http://balfanz.github.com/jsontoken-spec/draft-balfanz-jsontoken-00.html=
(which I=92ll refer to as Dirk=92s draft) and
>> http://self-issued.info/docs/draft-goland-json-web-token-00.html (which
>> I=92ll refer to as JWT).  This note points out some of the differences (=
and
>> commonalities) in the interest of building consensus towards a unified
>> approach.
>>
>>
>>
>> Commonalities:
>>
>> =B7         Both have ways of expressing the signature algorithm, token
>> issuer, token expiration time, and intended audience.
>>
>> =B7         Both use a form of base64url encoding of the JSON claim data=
.
>>
>> =B7         Both require support for the HMAC SHA-256 signature algorith=
m,
>> and describe how to sign with RSA SHA-256 as well.
>>
>>
>>
>> Differences:
>>
>> =B7         Dirk=92s draft uses a base64url encoding that may include on=
e or
>> two =91=3D=92 pad characters.  The JWT draft uses base64url encoding wit=
hout
>> padding.
>>
>> =B7         JWT uses shorter claim names in the interest of brevity (=93=
iss=94,
>> =93exp=94, and =93aud=94, versus =93issuer=94, =93not_after=94, and =93a=
udience=94).
>>
>> =B7         JWT also describes how to sign with ECDSA SHA-256, plus HMAC=
,
>> RSA, and ECDSA with longer key lengths.
>>
>> =B7         Dirk=92s tokens must be signed, whereas signing JWTs is opti=
onal.
>>
>> =B7         Dirk=92s draft provides for a key_id parameter and a means o=
f
>> serializing keys.
>>
>> =B7         Dirk=92s draft utilizes a Magic Signatures envelope, whereas=
 the
>> only =93envelope=94 component of a JWT is the encoded signature.
>>
>> =B7         Dirk=92s draft proposes that a particular discovery mechanis=
m be
>> used with JSON tokens.
>>
>>
>>
>> Let me tackle the differences one at a time, in hopes of driving towards=
 a
>> consensus position.
>>
>
> Hi there - thanks for writhing this up. Comments below:
>
>> =B7         *To pad or not to pad:*  The =91=3D=92 pad characters add le=
ngth, are
>> not URL-safe (and therefore must be escaped when used in URLs, adding mo=
re
>> length), and add no information.  Therefore, I would propose that we agr=
ee
>> not to use padding (as permitted by RFC 4648, Section 5<http://tools.iet=
f.org/html/rfc4648#section-5>),
>> especially since a no-padding implementation is trivial, as shown in JWT
>> Section 13<http://self-issued.info/docs/draft-goland-json-web-token-00.h=
tml#base64urlnotes>
>> .
>>
>
> I don't feel strongly about this, but remember John Panzer's cautionary
> tales here: Apparently, padding-less encoding is not well-supported in so=
me
> frameworks, which can lead to confusion.
>

Note: If this were the one remaining blocking issue keeping a shared core
signature spec from happening, I and the other implementors I've talked to
on Magic Signatures would be okay with switching if you feel really
strongly.  It will be an interop pain point but not a deal breaker.  So I
suggest putting this on hold, and seeing if everything else can be worked
out first, and if so, then we're done.


>
>
>> =B7         *Claim name length:* Given that a core goal of both specs is
>> short tokens, I would propose that we use the shorter reserved claim nam=
es.
>> Having short tokens is especially important when used with mobile browse=
rs,
>> where URL length restrictions may be severe.  (People are always free to=
 use
>> longer ones in any particular application context if they have a reason =
to
>> do so.)
>>
>
> I don't feel strongly about this, but I think many people do want to have
> more descriptive names here.
>
>
>> =B7         *Elliptic curve crypto and longer key lengths:*  The JWT spe=
c
>> defines how to use ECC as well as HMAC and RSA.  Given ECC=92s inclusion=
 in NSA
>> Suite B <http://www.nsa.gov/ia/programs/suiteb_cryptography/index.shtml>=
and that it has engineering advantages over RSA (shorter key lengths and
>> more efficient computations), it makes sense that any modern spec
>> incorporating cryptography allow its use as an option.  Likewise, it mak=
es
>> sense for the spec to define how to use longer key lengths on an optiona=
l
>> basis.
>>
> So this one I do feel more strongly about: We should only include crypto
> mechanisms that everybody MUST support. Otherwise, we'll have to invent s=
ome
> sort of negotiation step in the protocol: "do you support alg XYZ? No I
> don't, please use ABC". Let's not do that.
>
> As just one datapoint, Google would have a hard time supporting ECC, sinc=
e
> it's not in the Java core library. We don't use bouncycastle.
>
>
>>  =B7         *Unsigned tokens:*  In some application contexts, it may ma=
ke
>> sense to send unsigned tokens if carried in a signed and/or encrypted
>> container or channel.  Allowing for unsigned tokens means that double
>> signing need not occur.
>>
> That one just confuses me :-) What's the difference between OAuth without
> signatures and unsigned tokens? Is the latter not just a more complicated
> way of doing the former?
>
>  =B7         *Key identification:*  I agree that having means of identify=
ing
>> and distributing keys are critical for to end-to-end security of signed
>> tokens.  That=92s a separate point from whether the key identification a=
nd
>> distribution mechanisms should be part of the token format specification=
, or
>> treated separately.  I would advocate that it be treated separately (as =
was
>> done with SWTs as well), but am open to discussion on this point.
>>
>> =B7         *Discovery:*  Like key distribution, I believe that an
>> agreement on discovery mechanisms is critical to many use cases.  But li=
ke
>> key distribution, I=92d like us to take that up in a separate specificat=
ion,
>> rather than tightly binding the use of JSON tokens to a particular disco=
very
>> mechanism.
>>
>>
> Here is where I'm coming from: I find the public-key versions of the
> signatures much more intriguing - they allow for easier key management, k=
ey
> rotation, etc. To actually reap the benefits of key rotation, though, we
> need to say how to find out what the currently-used key is. If we don't,
> then a lot of the potential advantage of using public keys evaporates. I'=
m
> concerned that, lacking the discovery spec, developers will start
> hard-coding keys into their servers, and we'll end up in a situation wher=
e
> we can't rotate keys when Something Bad happens.
>
> =B7         *Envelope structure:*  Dirk=92s draft proposes that the signe=
d
>> content be wrapped in a particular kind of envelope.  Among other things=
,
>> this envelope can help prevent a token from being repurposed from one
>> context to another, by having a clear (and cryptographically verified)
>> declaration that =93This is a JSON token=94.  I understand this motivati=
on and
>> am open to discussions on how to best achieve it, while still providing =
as
>> little mechanism as possible (but no less J).
>>
> Well, you've seen my proposal on how to achieve it :-), but I'm also open
> to better ways, if someone comes up with one...
>
> Dirk.
>
>
>>
>>
>> Dirk, and others, please jump in!
>>
>>
>>
>>                                                                 -- Mike
>>
>>
>>
>
>
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth
>
>

--00504502ca54e81cd10491972ac2
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

<div class=3D"gmail_quote">Quick note:</div><div class=3D"gmail_quote"><br>=
</div><div class=3D"gmail_quote">On Tue, Sep 28, 2010 at 10:23 AM, Dirk Bal=
fanz <span dir=3D"ltr">&lt;<a href=3D"mailto:balfanz@google.com">balfanz@go=
ogle.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 class=3D"im">On Mon, Sep 27, 2010 at 5=
:46 PM, Mike Jones <span dir=3D"ltr">&lt;<a href=3D"mailto:Michael.Jones@mi=
crosoft.com" target=3D"_blank">Michael.Jones@microsoft.com</a>&gt;</span> w=
rote:<br>

</div><div class=3D"gmail_quote"><div class=3D"im"><blockquote class=3D"gma=
il_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-lef=
t:1ex">






<div lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div>
<p class=3D"MsoNormal">Dirk and I both posted JSON Token drafts on Thursday=
.=A0 They are at
<a href=3D"http://balfanz.github.com/jsontoken-spec/draft-balfanz-jsontoken=
-00.html" target=3D"_blank">
http://balfanz.github.com/jsontoken-spec/draft-balfanz-jsontoken-00.html</a=
> (which I=92ll refer to as Dirk=92s draft) and
<a href=3D"http://self-issued.info/docs/draft-goland-json-web-token-00.html=
" target=3D"_blank">http://self-issued.info/docs/draft-goland-json-web-toke=
n-00.html</a> (which I=92ll refer to as JWT).=A0 This note points out some =
of the differences (and commonalities) in the interest of
 building consensus towards a unified approach.</p>
<p class=3D"MsoNormal">=A0</p>
<p class=3D"MsoNormal">Commonalities:</p>
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span>Both have ways of expressing the signature algorithm, =
token issuer, token expiration time, and intended audience.</p>
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span>Both use a form of base64url encoding of the JSON clai=
m data.</p>
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span>Both require support for the HMAC SHA-256 signature al=
gorithm, and describe how to sign with RSA SHA-256 as well.</p>
<p class=3D"MsoNormal">=A0</p>
<p class=3D"MsoNormal">Differences:</p>
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span>Dirk=92s draft uses a base64url encoding that may incl=
ude one or two =91=3D=92 pad characters.=A0 The JWT draft uses base64url en=
coding without padding.</p>
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span>JWT uses shorter claim names in the interest of brevit=
y (=93iss=94, =93exp=94, and =93aud=94, versus =93issuer=94, =93not_after=
=94, and =93audience=94).</p>
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span>JWT also describes how to sign with ECDSA SHA-256, plu=
s HMAC, RSA, and ECDSA with longer key lengths.</p>
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span>Dirk=92s tokens must be signed, whereas signing JWTs i=
s optional.</p>
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span>Dirk=92s draft provides for a key_id parameter and a m=
eans of serializing keys.</p>
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span>Dirk=92s draft utilizes a Magic Signatures envelope, w=
hereas the only =93envelope=94 component of a JWT is the encoded signature.=
</p>
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span>Dirk=92s draft proposes that a particular discovery me=
chanism be used with JSON tokens.</p>
<p class=3D"MsoNormal">=A0</p>
<p class=3D"MsoNormal">Let me tackle the differences one at a time, in hope=
s of driving towards a consensus position.</p></div></div></blockquote><div=
><br></div></div><div>Hi there - thanks for writhing this up. Comments belo=
w:</div>

<div class=3D"im">
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex"><div lang=3D"EN-US" link=3D"blue" vlink=3D"p=
urple"><div>
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span><b>To pad or not to pad:</b>=A0 The =91=3D=92 pad char=
acters add length, are not URL-safe (and therefore must be escaped when use=
d in URLs, adding more length), and add no information.=A0 Therefore, I wou=
ld propose that we agree not to
 use padding (as permitted by <a href=3D"http://tools.ietf.org/html/rfc4648=
#section-5" target=3D"_blank">
RFC 4648, Section 5</a>), especially since a no-padding implementation is t=
rivial, as shown in<a href=3D"http://self-issued.info/docs/draft-goland-jso=
n-web-token-00.html#base64urlnotes" target=3D"_blank"> JWT Section 13</a>.<=
/p>


</div></div></blockquote><div><br></div></div><div>I don&#39;t feel strongl=
y about this, but remember John Panzer&#39;s cautionary tales here: Apparen=
tly, padding-less encoding is not well-supported in some frameworks, which =
can lead to confusion.</div>

</div></blockquote><div><br></div><div>Note: If this were the one remaining=
 blocking issue keeping a shared core signature spec from happening, I and =
the other implementors I&#39;ve talked to on Magic Signatures would be okay=
 with switching if you feel really strongly. =A0It will be an interop pain =
point but not a deal breaker. =A0So I suggest putting this on hold, and see=
ing if everything else can be worked out first, and if so, then we&#39;re d=
one.</div>

<div>=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;=
border-left:1px #ccc solid;padding-left:1ex;"><div class=3D"gmail_quote"><d=
iv class=3D"im">
<div>=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;=
border-left:1px #ccc solid;padding-left:1ex"><div lang=3D"EN-US" link=3D"bl=
ue" vlink=3D"purple"><div>
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span><b>Claim name length:</b> Given that a core goal of bo=
th specs is short tokens, I would propose that we use the shorter reserved =
claim names.=A0 Having short tokens is especially important when used with =
mobile browsers, where URL
 length restrictions may be severe.=A0 (People are always free to use longe=
r ones in any particular application context if they have a reason to do so=
.)</p></div></div></blockquote><div><br></div></div><div>I don&#39;t feel s=
trongly about this, but I think many people do want to have more descriptiv=
e names here.=A0</div>

<div class=3D"im">
<div>=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;=
border-left:1px #ccc solid;padding-left:1ex"><div lang=3D"EN-US" link=3D"bl=
ue" vlink=3D"purple"><div>
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span><b>Elliptic curve crypto and longer key lengths:</b>=
=A0 The JWT spec defines how to use ECC as well as HMAC and RSA.=A0 Given E=
CC=92s inclusion in
<a href=3D"http://www.nsa.gov/ia/programs/suiteb_cryptography/index.shtml" =
target=3D"_blank">NSA Suite B</a> and that it has engineering advantages ov=
er RSA (shorter key lengths and more efficient computations), it makes sens=
e that any modern spec incorporating cryptography allow
 its use as an option.=A0 Likewise, it makes sense for the spec to define h=
ow to use longer key lengths on an optional basis.</p></div></div></blockqu=
ote></div><div>So this one I do feel more strongly about: We should only in=
clude crypto mechanisms that everybody MUST support. Otherwise, we&#39;ll h=
ave to invent some sort of negotiation step in the protocol: &quot;do you s=
upport alg XYZ? No I don&#39;t, please use ABC&quot;. Let&#39;s not do that=
.=A0</div>


<div><br></div><div>As just one datapoint, Google would have a hard time su=
pporting ECC, since it&#39;s not in the Java core library. We don&#39;t use=
 bouncycastle.</div><div class=3D"im"><div>=A0</div><blockquote class=3D"gm=
ail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-le=
ft:1ex">


<div lang=3D"EN-US" link=3D"blue" vlink=3D"purple"><div>
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span><b>Unsigned tokens:</b>=A0 In some application context=
s, it may make sense to send unsigned tokens if carried in a signed and/or =
encrypted container or channel.=A0 Allowing for unsigned tokens means that =
double signing need not occur.</p>


</div></div></blockquote></div><div>That one just confuses me :-) What&#39;=
s the difference between OAuth without signatures and unsigned tokens? Is t=
he latter not just a more complicated way of doing the former?=A0</div><div=
>

<br>
</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-l=
eft:1px #ccc solid;padding-left:1ex"><div lang=3D"EN-US" link=3D"blue" vlin=
k=3D"purple"><div><div class=3D"im">
<p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.0pt &q=
uot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span><b>Key identification:</b>=A0 I agree that having mean=
s of identifying and distributing keys are critical for to end-to-end secur=
ity of signed tokens.=A0 That=92s a separate point from whether the key ide=
ntification and distribution
 mechanisms should be part of the token format specification, or treated se=
parately.=A0 I would advocate that it be treated separately (as was done wi=
th SWTs as well), but am open to discussion on this point.</p>
</div><p><span style=3D"font-family:Symbol"><span>=B7<span style=3D"font:7.=
0pt &quot;Times New Roman&quot;">=A0=A0=A0=A0=A0=A0=A0=A0
</span></span></span><b>Discovery:</b>=A0 Like key distribution, I believe =
that an agreement on discovery mechanisms is critical to many use cases.=A0=
 But like key distribution, I=92d like us to take that up in a separate spe=
cification, rather than tightly
 binding the use of JSON tokens to a particular discovery mechanism.</p>
<p><span style=3D"font-family:Symbol"><span></span></span></p></div></div><=
/blockquote><div><br></div><div>Here is where I&#39;m coming from: I find t=
he public-key versions of the signatures much more intriguing - they allow =
for easier key management, key rotation, etc. To actually reap the benefits=
 of key rotation, though, we need to say how to find out what the currently=
-used key is. If we don&#39;t, then a lot of the potential advantage of usi=
ng public keys evaporates. I&#39;m concerned that, lacking the discovery sp=
ec, developers will start hard-coding keys into their servers, and we&#39;l=
l end up in a situation where we can&#39;t rotate keys when Something Bad h=
appens.</div>

<div class=3D"im">
<div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex=
;border-left:1px #ccc solid;padding-left:1ex"><div lang=3D"EN-US" link=3D"b=
lue" vlink=3D"purple"><div><p><span style=3D"font-family:Symbol"><span>=B7<=
span>=A0=A0=A0=A0=A0=A0=A0=A0=A0</span></span></span><b>Envelope structure:=
</b>=A0 Dirk=92s draft proposes that the signed content be wrapped in a par=
ticular kind of envelope. =A0Among other things, this envelope can help pre=
vent a token from being repurposed from one context to another, by having a=
 clear (and cryptographically verified) declaration that =93This is a JSON =
token=94.=A0 I understand this motivation and am open to discussions on how=
 to best achieve it, while still providing as little mechanism as possible =
(but no less=A0<span style=3D"font-family:Wingdings">J</span>).</p>


</div></div></blockquote></div><div>Well, you&#39;ve seen my proposal on ho=
w to achieve it :-), but I&#39;m also open to better ways, if someone comes=
 up with one...</div><div><br></div><font color=3D"#888888"><div>Dirk.</div=
>

</font><div class=3D"im"><div>=A0</div><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div lang=3D"EN-US" link=3D"blue" vlink=3D"purple"><div><p class=3D"MsoNorm=
al">=A0</p>
<p class=3D"MsoNormal">Dirk, and others, please jump in!</p>
<p class=3D"MsoNormal">=A0</p>
<p class=3D"MsoNormal">=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 -- Mike</p>
<p class=3D"MsoNormal">=A0</p>
</div>
</div>

</blockquote></div></div><br>
<br>_______________________________________________<br>
OAuth mailing list<br>
<a href=3D"mailto:OAuth@ietf.org">OAuth@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/oauth" target=3D"_blank">h=
ttps://www.ietf.org/mailman/listinfo/oauth</a><br>
<br></blockquote></div><br>

--00504502ca54e81cd10491972ac2--
