Thanks Dominick for your comments!

Inline

 

> All other OAuth specs make a very clear distinction between users and client.

There’s a nuance worth highlighting here: sub != user. In previous discussions 
on this topic it has been brought up that the JWT spec defines sub as 
identifying the principal that is the subject of the JWT, and that’s not 
necessarily limited to users. 

However I get the potential confusion, and I am happy to add clarifying 
language if you have specific passages in the space you are particularly 
worried about: however I feel the matter is addressed upfront by the language 
in Section 2.2. in the sub entry, “In case of access tokens obtained through 
grants where no resource owner is involved, such as the client credentials 
grant, the value of sub SHOULD correspond to an identifier the authorization 
server uses to indicate the client application.“ and Section 5 has an entire 
paragraph discussing things to watch out in assigning sub values in the app 
identity case. Feel free to suggest additional language if you want to clarify 
further. 

 

> sub has a different semantic here as in OIDC

The  spec refers to RFC7519 in the sub definition in 2.2, rather than OIDC, to 
preempt that concern and keep the original sub semantic available.

 

> I am not fully clear why aud is required.

Aud is there mostly because of three reasons:

*       Many existing specs postulate its existence in the token. No one 
declares it as a proper MUST (apart from the BCP, but that’s partial) however I 
think its importance comes across..
-Bearer token usage RFC6750 calls it out (in threat mitigation) as the 
mechanism to prevent token redirect (and adds scope restriction as also 
important, however here we make it optional to acocut for non-delegations 
scenario).
-Resource indicators RFC8707 refers to the same section of RFC7519 as one of 
the assumptions that must hold to prevent bearer tokens misuse 
-BCP225 makes aud mandatory for AS which can issue JWTs for more than one app
*       Apart from Ping, for which some of its examples are without aud (but 
also without identifying scopes, given that the one I retrieved had only 
“openid”), all of the sample JWT ATs I received from vendors all featured an 
aud. I know one shoulnd’t overindex on those examples, but together with the 
above it seemed to point to something universally useful. One possible reason 
is that use of a format for the AT is correlated with topologies where AS and 
RS are separated by some boundary (network, logical, business, code factoring, 
etc) hence identifying the resource seems like a natural need. Again, not an 
iron clad law, but an indication.
*       A lot of people repurpose existing libraries for the JWT AT case, and 
some people even sends id_tokens in lieu of ATs. That doesn’t mean that we 
should condone any bad practices, but in tis particular case it suggests that 
lots of developers already expect/can handle an audience in the JWT used to 
call their API

None of those are a slam dunk argument for mandatory, but I find them 
compelling enough to simplify validation and just require an aud to be there, 
as opposed to introduce complications that make it conditional to the presence 
of scopes or other disambiguation. One reason I feel pretty good about that is 
that adding a default audience isn’t very hard if any of the above assumptions 
end up not being true for a particular case

 

> What’s the rationale for using iat instead of nbf. 

That’s just straight from OIDC ID_tokens, and the considerations about 
repurposing existing logic. I see there’s a thread on this specifically, let me 
answer further on that branch.

 

> This spec feels somehow in between a profile and a BCP

You are right that this spec attempts to go beyond just declaring a layout, and 
I agree this means that this profile will not apply to absolutely everyone. The 
reason I tried that route (at the cost of working way harder in the last year 
for reaching consensus than if we would have just listed the possible content), 
is that I often observe implementers make questionable choices because of the 
large leeway specifications allow. My hope was that the scope of this profile 
was small enough to make that extra level of guidance achievable, whereas 
trying to do the same with a larger spec would have been prohibitively 
expensive. 

I believe things worked out well so far: we had lots of constructive 
discussions, and I ended up relaxing A LOT of the constraints I was originally 
envisioning. Nonetheless, my hope is that we identified the right set of 
guidelines that will help people actually interoperate out of the box for the 
most basic/common scenarios, as opposed to complying with the letter of the 
spec but still having a lot to figure out out of band. 

 

From: OAuth <oauth-boun...@ietf.org> On Behalf Of Dominick Baier
Sent: Thursday, April 16, 2020 12:10 AM
To: Rifaat Shekh-Yusef <rifaat.i...@gmail.com>; oauth <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Second WGLC on "JSON Web Token (JWT) Profile for OAuth 
2.0 Access Tokens"

 

Since this is the last call, I thought I bring up some of thoughts / concerns. 
Some of them have been discussed before.

 

client_id vs sub

I am still not entirely happy with the “re-purposing” of the claim types based 
on flow.

If the intention is, that sub expresses the entity against which the resource 
will do authorisation (and that might be a client or a user) - I get it (and 
maybe it should be stated like that) - but

this thinking reminds me of the old AD days where there was no distinction 
between user and service accounts (something that has been fixed IIRC in 
Windows Server 2012 R2).

 

All other OAuth specs make a very clear distinction between users and client.

 

Furthermore it says

 

"Authorization servers should prevent scenarios where clients can

   affect the value of the sub claim in ways that could confuse resource

   servers.”

 

If we keep that dual semantics of the sub claim - it must be clearly stated, 
that subject ID and client ID are now in the same collision domain. So when an 
AS / OP creates them, they need to be unique across user ids and client ids.

 

Maybe it should be also explicitly mentioned that sub has a different semantic 
here as in OIDC - even though a majority of the software built today will use 
them together.

 

audience claim

I am not fully clear why aud is required. OAuth itself does not have a notion 
of an audience (in the JWT sense) - they have scopes (which is very similar). 
But in simple scenarios where resources don’t exist, you'd need to make up an 
audience just to fulfil this requirement. And in many case this will be either 
static or just repeat the scope values. What’s the value of that?

 

If the concept of resources are used, I absolutely agree that aud should be 
used too. But I wouldn’t make it required.

 

iat vs nbf

What’s the rationale for using iat instead of nbf. Aren’t most JWT libraries 
(including e.g. the .NET one) looking for nbf by default?

 

General

This spec feels somehow in between a profile and a BCP. On one hand you define 
some claims and their semantics (good) - on the other hand there is some 
prescriptive guidance and maybe over-specification. My concern is, that in the 
end no-one will fully comply with it, because it doesn’t work one way or the 
other for them.

 

I know we just went though the discussion to make certain claims required as 
opposed to optional - but maybe less is more.

 

Tbh - the most valuable part of the doc to me is the definition of the “at+jwt” 
typ. For the rest I’d rather like to see just some standard claims and IF they 
are used, which semantics they have.

 

cheers 

———

Dominick Baier

 

On 15. April 2020 at 20:59:31, Rifaat Shekh-Yusef (rifaat.i...@gmail.com 
<mailto:rifaat.i...@gmail.com> ) wrote:

Hi all,

 

This is a second working group last call for "JSON Web Token (JWT) Profile for 
OAuth 2.0 Access Tokens".

 

Here is the document:

https://tools.ietf.org/html/draft-ietf-oauth-access-token-jwt-06

 

Please send your comments to the OAuth mailing list by April 29, 2020.

 

Regards,

 Rifaat & Hannes

 

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

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

Reply via email to