Mike,


A couple of comments on JWT: (I had to send something after accidentally 
sending an empty message to the list ;-)



Section 4.1 "Reserved claim names"

There isn't a JSON "integer" type, just a "number" type.

The examples use a string value for "exp", while I expected a number (I 
expected "exp":1300752001 instead of "exp":"1300752001").

StringAndURI might be better named StringOrURI.



Section 5 "General rules for creating and validating a JWT"

  "5. When used in a security-related context, the JWT Claim Segment MUST be 
validated to only include claims whose syntax and semantics are both understood 
and supported."

Validation step 5 is very nasty towards future enhancements. It basically says 
a JWT with unrecognized claims must be rejected. A future-friendly alternative 
would be to ignore unrecognized claims.

I like Ben Laurie's note that the IETF's golden rule to "be liberal in what you 
accept" has "proved to be a less-than-great idea, particularly in protocols 
where you care about security, which is to say, all of them" 
[http://www.ietf.org/mail-archive/web/tls/current/msg04688.html]. Is this the 
sentiment behind step 5? I would agree with this sentiment for rejecting 
malformed JSON, but not for rejecting well-formed but unrecognized claims.

Perhaps the concern is that an unrecognized claim might change the meaning of 
another claim (eg qualify it to a limited context). That would be bad design of 
the claims, however.

A JWT used to access 2 apps may need some claims that only 1 app needs that the 
other has no need to recognize.



Section 7 "Signing JWTs with cryptographic algorithms"

It is a pity yet another set of names are required for algorithms that have 
been around for a while, eg "HS256", instead of "HmacSHA256" (Java's name) or 
"hmac-sha256" (fragment from XML digital signatures) or "HMAC-SHA256" 
(mimicking OAuth1). If we really want to save bytes, we could use "alg":"H" and 
use the length of the signature to distinguish between SHA-256/384/512.



Section 7.1 "Signing a JWT with HMAC SHA-256"

Drop "SHA-256" from the section name as it specifies signing with HMAC SHA-384 
and HMAC SHA-512 as well.

Similarly rename sections 7.2 to "Signing a JWT with RSA" and section 7.3 to 
"Signing a JWT with ECDSA".



Section 3.1 "Example unsigned JWT"

The base64url encoding of the example doesn't include a '-' or '_' character, 
which would be helpful as these are the important differences from normal 
base64. Changing ".../is_root" to ".../~is_root" adds a "-" to the encoding.







--

James Manger



From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of Mike 
Jones
Sent: Friday, 24 September 2010 10:22 AM
To: oauth@ietf.org
Subject: [OAUTH-WG] JSON Web Token (JWT) Specification Draft



Recognizing that there is substantial interest in representing sets of claims 
in JSON tokens, Yaron Goland and I have put together a draft JSON Web Token 
(JWT) spec for that purpose.



To answer the obvious question, while this was produced independently of Dirk's 
JSON token 
proposal<http://balfanz.github.com/jsontoken-spec/draft-balfanz-jsontoken-00.html>,
 both of us agree that we should come up with a unified spec.  Consider this an 
additional point in the possible design space from which to start discussions 
and drive consensus.  (If you read the two proposals, I think you'll find that 
there's already a lot in common, which is great.)



Thanks to those of you who have already given us feedback to improve the draft 
prior to this point.



                                                            Cheers,

                                                            -- Mike



_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to