Return-Path: <Michael.Jones@microsoft.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 433B53A6BE0 for <oauth@core3.amsl.com>;
 Mon, 27 Sep 2010 17:45:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.825
X-Spam-Level: 
X-Spam-Status: No, score=-9.825 tagged_above=-999 required=5 tests=[AWL=-0.310,
 BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-8, URIBL_RHS_DOB=1.083]
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 wbHl9YRcoZ3e for
 <oauth@core3.amsl.com>; Mon, 27 Sep 2010 17:45:46 -0700 (PDT)
Received: from smtp.microsoft.com (smtp.microsoft.com [131.107.115.215]) by
 core3.amsl.com (Postfix) with ESMTP id 3BCAD3A6BF8 for <oauth@ietf.org>;
 Mon, 27 Sep 2010 17:45:46 -0700 (PDT)
Received: from TK5EX14HUBC104.redmond.corp.microsoft.com (157.54.80.25) by
 TK5-EXGWY-E802.partners.extranet.microsoft.com (10.251.56.168) with Microsoft
 SMTP Server (TLS) id 8.2.176.0; Mon, 27 Sep 2010 17:46:26 -0700
Received: from TK5EX14MBXC207.redmond.corp.microsoft.com ([169.254.7.160]) by
 TK5EX14HUBC104.redmond.corp.microsoft.com ([157.54.80.25]) with mapi id
 14.01.0218.012; Mon, 27 Sep 2010 17:46:25 -0700
From: Mike Jones <Michael.Jones@microsoft.com>
To: "oauth@ietf.org" <oauth@ietf.org>
Thread-Topic: Comparing the JSON Token drafts
Thread-Index: Actepo9jOHYKrp9WTw+gSIlGeIAPVg==
Date: Tue, 28 Sep 2010 00:46:25 +0000
Message-ID: <4E1F6AAD24975D4BA5B168042967394314AA9AF0@TK5EX14MBXC207.redmond.corp.microsoft.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [157.54.51.76]
Content-Type: multipart/alternative;
 boundary="_000_4E1F6AAD24975D4BA5B168042967394314AA9AF0TK5EX14MBXC207r_"
MIME-Version: 1.0
Subject: [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: Tue, 28 Sep 2010 00:45:54 -0000

--_000_4E1F6AAD24975D4BA5B168042967394314AA9AF0TK5EX14MBXC207r_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Dirk and I both posted JSON Token drafts on Thursday.  They are at http://b=
alfanz.github.com/jsontoken-spec/draft-balfanz-jsontoken-00.html (which I'l=
l refer to as Dirk's draft) and http://self-issued.info/docs/draft-goland-j=
son-web-token-00.html (which I'll refer to as JWT).  This note points out s=
ome of the differences (and commonalities) in the interest of building cons=
ensus towards a unified approach.

Commonalities:

*         Both have ways of expressing the signature algorithm, token issue=
r, token expiration time, and intended audience.

*         Both use a form of base64url encoding of the JSON claim data.

*         Both require support for the HMAC SHA-256 signature algorithm, an=
d describe how to sign with RSA SHA-256 as well.

Differences:

*         Dirk's draft uses a base64url encoding that may include one or tw=
o '=3D' pad characters.  The JWT draft uses base64url encoding without padd=
ing.

*         JWT uses shorter claim names in the interest of brevity ("iss", "=
exp", and "aud", versus "issuer", "not_after", and "audience").

*         JWT also describes how to sign with ECDSA SHA-256, plus HMAC, RSA=
, and ECDSA with longer key lengths.

*         Dirk's tokens must be signed, whereas signing JWTs is optional.

*         Dirk's draft provides for a key_id parameter and a means of seria=
lizing keys.

*         Dirk's draft utilizes a Magic Signatures envelope, whereas the on=
ly "envelope" component of a JWT is the encoded signature.

*         Dirk's draft proposes that a particular discovery mechanism be us=
ed with JSON tokens.

Let me tackle the differences one at a time, in hopes of driving towards a =
consensus position.

*         To pad or not to pad:  The '=3D' pad characters add length, are n=
ot URL-safe (and therefore must be escaped when used in URLs, adding more l=
ength), and add no information.  Therefore, I would propose that we agree n=
ot to use padding (as permitted by RFC 4648, Section 5<http://tools.ietf.or=
g/html/rfc4648#section-5>), especially since a no-padding implementation is=
 trivial, as shown in JWT Section 13<http://self-issued.info/docs/draft-gol=
and-json-web-token-00.html#base64urlnotes>.

*         Claim name length: Given that a core goal of both specs is short =
tokens, I would propose that we use the shorter reserved claim names.  Havi=
ng short tokens is especially important when used with mobile browsers, whe=
re URL length restrictions may be severe.  (People are always free to use l=
onger ones in any particular application context if they have a reason to d=
o so.)

*         Elliptic curve crypto and longer key lengths:  The JWT spec defin=
es how to use ECC as well as HMAC and RSA.  Given ECC's inclusion in NSA Su=
ite B<http://www.nsa.gov/ia/programs/suiteb_cryptography/index.shtml> and t=
hat it has engineering advantages over RSA (shorter key lengths and more ef=
ficient computations), it makes sense that any modern spec incorporating cr=
yptography allow its use as an option.  Likewise, it makes sense for the sp=
ec to define how to use longer key lengths on an optional basis.

*         Unsigned tokens:  In some application contexts, it may make 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 no=
t occur.

*         Key identification:  I agree that having means of identifying and=
 distributing keys are critical for to end-to-end security of signed tokens=
.  That's a separate point from whether the key identification and distribu=
tion mechanisms should be part of the token format specification, or treate=
d separately.  I would advocate that it be treated separately (as was done =
with SWTs as well), but am open to discussion on this point.

*         Envelope structure:  Dirk's draft proposes that the signed conten=
t be wrapped in a particular kind of envelope.  Among other things, this en=
velope can help prevent a token from being repurposed from one context to a=
nother, by having a clear (and cryptographically verified) declaration that=
 "This is a JSON token".  I understand this motivation and am open to discu=
ssions on how to best achieve it, while still providing as little mechanism=
 as possible (but no less :)).

*         Discovery:  Like key distribution, I believe that an agreement on=
 discovery mechanisms is critical to many use cases.  But like key distribu=
tion, I'd like us to take that up in a separate specification, rather than =
tightly binding the use of JSON tokens to a particular discovery mechanism.

Dirk, and others, please jump in!

                                                                -- Mike


--_000_4E1F6AAD24975D4BA5B168042967394314AA9AF0TK5EX14MBXC207r_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:34;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri","sans-serif";}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
/* List Definitions */
@list l0
	{mso-list-id:291833288;
	mso-list-type:hybrid;
	mso-list-template-ids:-388862316 67698689 67698691 67698693 67698689 67698=
691 67698693 67698689 67698691 67698693;}
@list l0:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l0:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l0:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l0:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l1
	{mso-list-id:700595769;
	mso-list-type:hybrid;
	mso-list-template-ids:-2054364442 67698689 67698691 67698693 67698689 6769=
8691 67698693 67698689 67698691 67698693;}
@list l1:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l1:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l1:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l1:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l1:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l1:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l1:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l1:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l1:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l2
	{mso-list-id:1726443846;
	mso-list-type:hybrid;
	mso-list-template-ids:-1432038628 67698689 67698691 67698693 67698689 6769=
8691 67698693 67698689 67698691 67698693;}
@list l2:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l2:level2
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l2:level3
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l2:level4
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l2:level5
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l2:level6
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
@list l2:level7
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l2:level8
	{mso-level-number-format:bullet;
	mso-level-text:o;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Courier New";}
@list l2:level9
	{mso-level-number-format:bullet;
	mso-level-text:\F0A7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Wingdings;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal">Dirk and I both posted JSON Token drafts on Thursday=
.&nbsp; They are at
<a href=3D"http://balfanz.github.com/jsontoken-spec/draft-balfanz-jsontoken=
-00.html">
http://balfanz.github.com/jsontoken-spec/draft-balfanz-jsontoken-00.html</a=
> (which I&#8217;ll refer to as Dirk&#8217;s draft) and
<a href=3D"http://self-issued.info/docs/draft-goland-json-web-token-00.html=
">http://self-issued.info/docs/draft-goland-json-web-token-00.html</a> (whi=
ch I&#8217;ll refer to as JWT).&nbsp; This note points out some of the diff=
erences (and commonalities) in the interest of
 building consensus towards a unified approach.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Commonalities:<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l1 level=
1 lfo1"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Both have ways of expressing the signature a=
lgorithm, token issuer, token expiration time, and intended audience.<o:p><=
/o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l1 level=
1 lfo1"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Both use a form of base64url encoding of the=
 JSON claim data.<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l1 level=
1 lfo1"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Both require support for the HMAC SHA-256 si=
gnature algorithm, and describe how to sign with RSA SHA-256 as well.<o:p><=
/o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Differences:<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l0 level=
1 lfo2"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Dirk&#8217;s draft uses a base64url encoding=
 that may include one or two &#8216;=3D&#8217; pad characters.&nbsp; The JW=
T draft uses base64url encoding without padding.<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l0 level=
1 lfo2"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>JWT uses shorter claim names in the interest=
 of brevity (&#8220;iss&#8221;, &#8220;exp&#8221;, and &#8220;aud&#8221;, v=
ersus &#8220;issuer&#8221;, &#8220;not_after&#8221;, and &#8220;audience&#8=
221;).<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l0 level=
1 lfo2"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>JWT also describes how to sign with ECDSA SH=
A-256, plus HMAC, RSA, and ECDSA with longer key lengths.<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l0 level=
1 lfo2"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Dirk&#8217;s tokens must be signed, whereas =
signing JWTs is optional.<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l0 level=
1 lfo2"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Dirk&#8217;s draft provides for a key_id par=
ameter and a means of serializing keys.<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l0 level=
1 lfo2"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Dirk&#8217;s draft utilizes a Magic Signatur=
es envelope, whereas the only &#8220;envelope&#8221; component of a JWT is =
the encoded signature.<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l0 level=
1 lfo2"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Dirk&#8217;s draft proposes that a particula=
r discovery mechanism be used with JSON tokens.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Let me tackle the differences one at a time, in hope=
s of driving towards a consensus position.<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l2 level=
1 lfo3"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><b>To pad or not to pad:</b>&nbsp; The &#821=
6;=3D&#8217; pad characters add length, are not URL-safe (and therefore mus=
t be escaped when used in URLs, adding more length), and add no information=
.&nbsp; Therefore, I would propose that we agree not to
 use padding (as permitted by <a href=3D"http://tools.ietf.org/html/rfc4648=
#section-5">
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"> JWT Section 13</a>.<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l2 level=
1 lfo3"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><b>Claim name length:</b> Given that a core =
goal of both specs is short tokens, I would propose that we use the shorter=
 reserved claim names.&nbsp; Having short tokens is especially important wh=
en used with mobile browsers, where URL
 length restrictions may be severe.&nbsp; (People are always free to use lo=
nger ones in any particular application context if they have a reason to do=
 so.)<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l2 level=
1 lfo3"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><b>Elliptic curve crypto and longer key leng=
ths:</b>&nbsp; The JWT spec defines how to use ECC as well as HMAC and RSA.=
&nbsp; Given ECC&#8217;s inclusion in
<a href=3D"http://www.nsa.gov/ia/programs/suiteb_cryptography/index.shtml">=
NSA Suite B</a> and that it has engineering advantages over RSA (shorter ke=
y lengths and more efficient computations), it makes sense that any modern =
spec incorporating cryptography allow
 its use as an option.&nbsp; Likewise, it makes sense for the spec to defin=
e how to use longer key lengths on an optional basis.<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l2 level=
1 lfo3"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><b>Unsigned tokens:</b>&nbsp; In some applic=
ation contexts, it may make sense to send unsigned tokens if carried in a s=
igned and/or encrypted container or channel.&nbsp; Allowing for unsigned to=
kens means that double signing need not occur.<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l2 level=
1 lfo3"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><b>Key identification:</b>&nbsp; I agree tha=
t having means of identifying and distributing keys are critical for to end=
-to-end security of signed tokens.&nbsp; That&#8217;s a separate point from=
 whether the key identification and distribution
 mechanisms should be part of the token format specification, or treated se=
parately.&nbsp; I would advocate that it be treated separately (as was done=
 with SWTs as well), but am open to discussion on this point.<o:p></o:p></p=
>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l2 level=
1 lfo3"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><b>Envelope structure:</b>&nbsp; Dirk&#8217;=
s draft proposes that the signed content be wrapped in a particular kind of=
 envelope. &nbsp;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 &#8220=
;This is a JSON token&#8221;.&nbsp; I understand this motivation and am ope=
n to discussions on how to best achieve it, while still providing as little=
 mechanism as possible (but no less
<span style=3D"font-family:Wingdings">J</span>).<o:p></o:p></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in;mso-list:l2 level=
1 lfo3"><![if !supportLists]><span style=3D"font-family:Symbol"><span style=
=3D"mso-list:Ignore">&middot;<span style=3D"font:7.0pt &quot;Times New Roma=
n&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><b>Discovery:</b>&nbsp; Like key distributio=
n, I believe that an agreement on discovery mechanisms is critical to many =
use cases.&nbsp; But like key distribution, I&#8217;d like us to take that =
up in a separate specification, rather than tightly
 binding the use of JSON tokens to a particular discovery mechanism.<o:p></=
o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Dirk, and others, please jump in!<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">&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;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp; -- Mike<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>

--_000_4E1F6AAD24975D4BA5B168042967394314AA9AF0TK5EX14MBXC207r_--
