Re: [jose] Should we delete the "typ" header field

John Bradley <ve7jtb@ve7jtb.com> Thu, 30 May 2013 01:17 UTC

Return-Path: <ve7jtb@ve7jtb.com>
X-Original-To: jose@ietfa.amsl.com
Delivered-To: jose@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7873F21F9403 for <jose@ietfa.amsl.com>; Wed, 29 May 2013 18:17:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.677
X-Spam-Level:
X-Spam-Status: No, score=-2.677 tagged_above=-999 required=5 tests=[AWL=-0.079, BAYES_00=-2.599, HTML_MESSAGE=0.001]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eyrpEhkb573U for <jose@ietfa.amsl.com>; Wed, 29 May 2013 18:17:05 -0700 (PDT)
Received: from mail-qa0-x232.google.com (mail-qa0-x232.google.com [IPv6:2607:f8b0:400d:c00::232]) by ietfa.amsl.com (Postfix) with ESMTP id 50AA821F87FB for <jose@ietf.org>; Wed, 29 May 2013 18:17:03 -0700 (PDT)
Received: by mail-qa0-f50.google.com with SMTP id ci6so12028qab.16 for <jose@ietf.org>; Wed, 29 May 2013 18:17:02 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=content-type:mime-version:subject:from:in-reply-to:date:cc :message-id:references:to:x-mailer:x-gm-message-state; bh=zdCwhhMYnvvp2vf1qRgE2IWhfk+N3I+Unjmd0REIiLc=; b=cFW4+NUWSY1jt6i+9HguRhtjnUjssTAxwlsWsZ9B5B76KEr4vDIHrOYQItPODcDvit +qUam9kaePwHQDwmHdSoyKys/JP5juvgcSos2JGNl64qFkIAM9zXn0nywqM0fof/ncBx SGyWFVQf4km4NoS6u6ScvYHbDw5tSLIlgW+1URrN3GrfUM0j8x5o+89v/+/nkJvvLJJo 9p6f69Lg1CaTUoJqNSr0F7z5oaPvao09H9G8fM8px8X/5mM8ISjWjUHj+Gu7gVRbyZeh EA64IU/CvNwN0Wx69UgLrToX/N7m9TL9chWIGRHZnbYAslf4Y9QMz/xtHxbmdBsN5w0W 9aFg==
X-Received: by 10.224.37.198 with SMTP id y6mr5364023qad.83.1369876622715; Wed, 29 May 2013 18:17:02 -0700 (PDT)
Received: from [192.168.1.36] (190-20-29-231.baf.movistar.cl. [190.20.29.231]) by mx.google.com with ESMTPSA id u14sm34350025qao.6.2013.05.29.18.16.59 for <multiple recipients> (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 29 May 2013 18:17:01 -0700 (PDT)
Content-Type: multipart/signed; boundary="Apple-Mail=_6CF3F5D2-120F-4040-B79D-7E8392407546"; protocol="application/pkcs7-signature"; micalg="sha1"
Mime-Version: 1.0 (Mac OS X Mail 6.3 \(1503\))
From: John Bradley <ve7jtb@ve7jtb.com>
In-Reply-To: <CAD9ie-vQQNZBBHMnH7tesL+z8=CpPxi2yX+AyhHoLNVTfquRKA@mail.gmail.com>
Date: Wed, 29 May 2013 21:16:49 -0400
Message-Id: <567D70ED-C885-4AA8-ACF4-7EA70F790B20@ve7jtb.com>
References: <02b701ce5cb8$46ae77e0$d40b67a0$@augustcellars.com> <CAD9ie-vK3gY9b9GQrbUa=TACy5KVA1uPH_u_utucoKzVynjuiA@mail.gmail.com> <02f501ce5cc5$ec9a2200$c5ce6600$@augustcellars.com> <CAD9ie-uV-THE0+oL-dNUB0qXF7sx8jHMZDCz8vGESmUHWV=LMg@mail.gmail.com> <C84C740C-CA7F-40F4-829B-1A1C09EF357F@ve7jtb.com> <CAD9ie-tgN7NyEU4_AP=KvcJZWSY_iOk85YYR_7zndb5ZGcP3Bw@mail.gmail.com> <4E1F6AAD24975D4BA5B1680429673943677C5D3E@TK5EX14MBXC285.redmond.corp.microsoft.com> <CAD9ie-vQQNZBBHMnH7tesL+z8=CpPxi2yX+AyhHoLNVTfquRKA@mail.gmail.com>
To: Dick Hardt <dick.hardt@gmail.com>
X-Mailer: Apple Mail (2.1503)
X-Gm-Message-State: ALoCoQm6/5vKuzEHktXVEXCRAlpQf4qBQnnt75h1y9n28qyAREfV0Y/Aem3ID6+82GIEBJCFwLwZ
Cc: Mike Jones <Michael.Jones@microsoft.com>, Jim Schaad <ietf@augustcellars.com>, "jose@ietf.org" <jose@ietf.org>
Subject: Re: [jose] Should we delete the "typ" header field
X-BeenThere: jose@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Javascript Object Signing and Encryption <jose.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/jose>, <mailto:jose-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/jose>
List-Post: <mailto:jose@ietf.org>
List-Help: <mailto:jose-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/jose>, <mailto:jose-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 30 May 2013 01:17:07 -0000

In the JWT spec a JWT is the entire object in compact JWE or JWS serialization  eg three period separate base64encoded segments for compact JWS.   

For a JWT the payload is 1 a claim-set (plain JSON with claims) or 2 another JWT (JWE or JWS as indicated by "cty")

John B.

On 2013-05-29, at 9:02 PM, Dick Hardt <dick.hardt@gmail.com> wrote:

> As currently defined, I won't use "typ"
> 
> I was using "typ" to signal if the library was doing JWS or JWE processing. 
> 
> I don't understand the difference between a JWT which was the payload and a JWT Claims Set. I personally think the term Claims to be confusing.
> 
> 
> On Wed, May 29, 2013 at 5:41 PM, Mike Jones <Michael.Jones@microsoft.com> wrote:
> Actually, John, the text in the JWT spec is:
> 
>  
> 
> 5.1.  "typ" (Type) Header Parameter
> 
>  
> 
>  
> 
>    The "typ" (type) header parameter is used to declare the type of this
> 
>    object.  If present, it is RECOMMENDED that its value be either "JWT"
> 
>    or "urn:ietf:params:oauth:token-type:jwt" to indicate that this
> 
>    object is a JWT.  The "typ" value is a case sensitive string.  Use of
> 
>    this header parameter is OPTIONAL.
> 
>  
> 
> The reason I’m pointing this out is that your message could be read to mean that the JWT spec requires the use of the “typ” parameter, which it doesn’t.  What it does do is RECOMMEND values to use, should they be useful in context.  It needs to remain OPTIONAL.
> 
>  
> 
> Answering Dick’s question “What else would it unwrap to?” – if you have a nested JWT, it could unwrap to a JWT which was the Payload or Plaintext value, rather than a JWT Claims Set.
> 
>  
> 
>                                                                 -- Mike
> 
>  
> 
> From: jose-bounces@ietf.org [mailto:jose-bounces@ietf.org] On Behalf Of Dick Hardt
> Sent: Wednesday, May 29, 2013 5:30 PM
> To: John Bradley
> Cc: Jim Schaad; jose@ietf.org
> 
> 
> Subject: Re: [jose] Should we delete the "typ" header field
> 
>  
> 
>  
> 
>  
> 
> On Wed, May 29, 2013 at 5:25 PM, John Bradley <ve7jtb@ve7jtb.com> wrote:
> 
> In the JWT spec the value of "typ" SHOULD be "jwt".   That indicates as Mike stated that it is a JWT in compact format that has as its body a jwt claim set.   If the claim set is signed then encrypted, the inner JWT has a a typ of jwt and no cty , and the outer one has a typ of JWT and a cty of jws.
> 
>  
> 
> I'm doing symmetric encryption with an integrity check, so I don't have a JWT in a JWE
> 
>  
> 
>  
> 
> If a JOSE object has a typ of jws then one would assume that it is a jws in compact serialization with some other body type then a jwt claimset.
> 
>  
> 
> I think this is somewhat a symptom of the JWT and JOSE specs getting split into different WG.
> 
>  
> 
> So Mike can correct me but I don't think putting jwe or jws in typ is the intended use of that element if you are in fact sending JWT.
> 
>  
> 
> I understand where Jim is coming from I think of JWT as a jwt claim-set and JWE and JWS as the outer layer, where JWT thinks of itself as a total security token definition including overall processing rules for security tokens, with a standard envelope segment and JWE or JWS encoding as determined by the alg.
> 
>  
> 
> That is confusing to me.
> 
>  
> 
>  
> 
> In security token processing knowing that what you have will unwrap to a JWT claim-set , rather than to some other thing is quite important.
> 
>  
> 
> What else would it unwrap to?
> 
>  
> 
>  
> 
> John B.
> 
>  
> 
>  
> 
> On 2013-05-29, at 7:56 PM, Dick Hardt <dick.hardt@gmail.com> wrote:
> 
> 
> 
> 
> I use it all the time and my code would barf if it was not there.
> 
>  
> 
> I think it should be required rather than be a hint if it is going ot be there.
> 
>  
> 
> On Wed, May 29, 2013 at 4:40 PM, Jim Schaad <ietf@augustcellars.com> wrote:
> 
> I think the values just changed
> 
>  
> 
> However the way you are using it would be an argument to say that it should be a required field.  Are you just using it as a hint if it exists and then looking at the rest of the fields if it is not present?
> 
>  
> 
> Jim
> 
>  
> 
>  
> 
> From: Dick Hardt [mailto:dick.hardt@gmail.com] 
> Sent: Wednesday, May 29, 2013 3:49 PM
> To: Jim Schaad
> Cc: jose@ietf.org
> Subject: Re: [jose] Should we delete the "typ" header field
> 
>  
> 
> Well, I have been using, but now realize the spec changed or I was confused.
> 
>  
> 
> I had been setting "typ" to be either "JWE" or "JWS" depending on the type of token I was creating or parsing as it was easier than looking at "alg"
> 
>  
> 
> As currently defined, I don't see value in "typ".
> 
>  
> 
> -- Dick
> 
>  
> 
>  
> 
> On Wed, May 29, 2013 at 3:02 PM, Jim Schaad <ietf@augustcellars.com> wrote:
> 
> In reading the documents, I am trying to understand the justification for having the “typ” header parameter in the JOSE documents.
> 
>  
> 
> The purpose of the field is to hold the type of the object.  In the past, I believe that values which should now be placed in the cty field (such as “JWT”) were placed in this field as well.  However the parameter is optional and an implementation cannot rely on its being present.  This means that for all practical purposes all of the code to determine the value of the type field from the values of the alg and enc fields.  If the field was mandatory then this code would disappear at a fairly small space cost and I can understand why the parameter would be present.
> 
>  
> 
> Can anybody justify why this field should be present in the document – or should it just disappear?
> 
>  
> 
> Jim
> 
>  
> 
> 
> _______________________________________________
> jose mailing list
> jose@ietf.org
> https://www.ietf.org/mailman/listinfo/jose
> 
> 
> 
> 
>  
> 
> -- 
> -- Dick
> 
> 
> 
> 
>  
> 
> -- 
> -- Dick
> 
> _______________________________________________
> jose mailing list
> jose@ietf.org
> https://www.ietf.org/mailman/listinfo/jose
> 
>  
> 
> 
> 
> 
>  
> 
> -- 
> -- Dick
> 
> 
> 
> 
> -- 
> -- Dick