Part of the reasoning for using a structured confirmation claim, rather than 
flattening the confirmation claim into the top-level JWT claims set, is that a 
JWT may carry more than one conformation key or key descriptor, as was 
mentioned in Prague.  For instance, imagine that an application is conveying an 
application-level confirmation key using the “cnf” claim and for instance a 
token binding key using a second instance of the confirmation structure, say 
using the “tokbnd” claim.  With the current structured approach, you’d have:

{…
“cnf”:{“jwk”: …},
“tokbnd”:{“jwk”: …}
}

If one were to flatten the structure, however, unique claim names would have to 
be produced for the cross-product of each conformation element and each 
confirmation claim.  So you’d end up defining and registering these claims in 
the top-level JWT Claims registry:
                cnf_jwk
                cnf_jwe
                cnf_kid
                tokbnd_jwk
                tokbnd_jwe
                tokbnd_kid
If you add other kind of confirmation keys, things would continue to get even 
sillier.

The code will be simpler if you can have a single shared routine for handling 
confirmation structures rather a separate for handling cnf_jwk, cnf_jwe, 
cnf_kid from the one for handling tokbnd_jwk, tokbnd_jwe, tokbnd_kid, etc.

Another reason the structure makes things conceptually simpler is that then you 
can always use the name “kid” to hold a key ID, no matter the context, rather 
than having to use name-your-prefix_kid.  The same holds true for other 
elements.

I’m sorry this wasn’t clear in Prague.  I know it was mentioned in the context 
of carrying multiple confirmation keys in a JWT, but it went by pretty fast.

Based on the discussion in Prague, I believe that we should add language to the 
spec saying that applications can define new claim names other than “cnf” to 
use to represent application-specific confirmation structures that have the 
same syntax as those using the “cnf” name.  Would that do the trick for you?

By the way, I’m as much in favor of compactness as anyone.  Heck – I was one of 
the folks who foisted the short claim names like “iss” on the world!  But I 
really do believe that in this case, having structure makes things more 
readable and more flexible, especially since there will be cases where there 
are multiple confirmation structures in the same JWT.  And once you prefix the 
names, you lose most of the space savings anyway.

                                                                Best wishes,
                                                                -- Mike

From: OAuth [mailto:[email protected]] On Behalf Of Brian Campbell
Sent: Thursday, July 30, 2015 11:29 AM
To: Nat Sakimura <[email protected]>
Cc: oauth <[email protected]>
Subject: [OAUTH-WG] JWT PoP Key Semantics WGLC followup 3 (was Re: confirmation 
model in proof-of-possession-02)

Using individual claims for the different confirmation types would convey the 
same information with a reduced message size, likely simpler  implementation, 
and avoid the need to establish a new registry.

Seems like a no-brainer to me but maybe I'm overlooking something?
There hasn't been much discussion that I'm aware of. Nat seemed in favor of it 
(the +1 below). Mike was dismissive of it at the Dallas meeting but didn't 
provide any reasoning (that I understood anyway).


On Mon, Mar 23, 2015 at 10:18 AM, Nat Sakimura 
<[email protected]<mailto:[email protected]>> wrote:
+1

=nat via iPhone

2015/03/23 11:07、Brian Campbell 
<[email protected]<mailto:[email protected]>> のメッセージ:
This is mostly about section 
3.4<https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2ftools.ietf.org%2fhtml%2fdraft-ietf-oauth-proof-of-possession-02%23section-3.4&data=01%7c01%7cMichael.Jones%40microsoft.com%7c8abba73f10ae4e3ddcff08d2990cd3bb%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=2dHZxIhDc2jtu1krNFIccKamceZvM4%2b7Yw0hJGA6WcY%3d>
 but also the whole draft.

If "cnf" is intended to analogous to the SAML 2.0 SubjectConfirmation element, 
it should probably contain an array value rather than an object value. SAML 
allows not just for multiple methods of confirming but for multiple instances 
of the same method. IIRC, only one confirmation needs to be confirmable.
I'm not sure the extra complexity is worth it though. I've rarely, if ever, 
seen SAML assertions that make use of it.
If the intent is just to allow for different kinds of confirmation, couldn't 
the structure be pared down and simplified and just have individual claims for 
the different confirmation types? Like "cjwk" and "ckid" or similar that have 
the jwk or kid value respectively as the member value.


_______________________________________________
OAuth mailing list
[email protected]<mailto:[email protected]>
https://www.ietf.org/mailman/listinfo/oauth<https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fwww.ietf.org%2fmailman%2flistinfo%2foauth&data=01%7c01%7cMichael.Jones%40microsoft.com%7c8abba73f10ae4e3ddcff08d2990cd3bb%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=jwMvoc50hKttPr1u5gwWLmmCI9k3zumK8RtzWR2F7w0%3d>

_______________________________________________
OAuth mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to