Thank you Jared for your comment!
I have to admit I have been very tempted to go that route, mostly for moving 
things forward, but I still think we’d do the reader a disservice by relaxing 
the language there.
Real world scenarios are full of situations where additional assumptions can 
lower dangers that must be taken in consideration in the general case, which 
might make less of a risk going against the spec in those particular 
circumstances, but their existence doesn’t warrant relaxing guidance for the 
general case. A concrete example: I worked on scenarios where resource servers 
wanted to guarantee some degree of business continuity in case of AS outage, 
which boiled down to RS’ willingness to accept ATs past their declared 
expiration time, on the condition that the AS outage condition was detectable 
and the staleness of the AT didn’t cross a tolerance threshold. The business 
scenario made sense, and the implementer was within their right in deciding 
that disregarding exp in those circumstances was acceptable. Nonetheless, I 
would not argue that given the existence of that scenario, rfc7519 should turn 
its MUST NOT into a SHOULD NOT.
There might be circumstances in which the stars align and it is safe for a 
client to inspect the AT, but in the general case that’s not true (this has 
been covered in details in the various threads on the topic). Also note, the 
fact that the client (as the application code) is banned from doing that 
inspection doesn’t mean that the solution as a whole cannot do it. Developers 
can examine network traces, or use any other mechanism available in their 
particular circumstances to inspect traffic that are out of scope for this 
specification, and that would give them in practice the oversight discussed 
here where possible. The specification doesn’t aim at preventing that 
inspection in general, but it does aim at ensuring that the ability to do 
perform that is excluded from the contract between the roles described in 
OAuth2, so that any violation is either understood to be high bar, or the logic 
meant to perform those checks is implemented outside of the client code itself, 
preserving the protocol invariants and protecting developers from one of the 
most painful production issues I have observed in many years of real life use 
of JWT ATs.
Ultimately, the latter part is one of the reasons for which I have a hard time 
relaxing this part, whereas pretty easily relaxed constraints on other areas 
where my initial position was more strict (multiple resources in audience, 
etc). I know this to be very painful if not addressed correctly, and the only 
arguments against it appear to be more about principle than about concrete 
scenarios, expressive power or security.

From: Jared Jennings <jaredljenni...@gmail.com>
Date: Monday, May 11, 2020 at 06:30
To: Denis <denis.i...@free.fr>
Cc: Benjamin Kaduk <ka...@mit.edu>, Vittorio Bertocci 
<vittorio.berto...@auth0.com>, "oauth@ietf.org" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Second WGLC on "JSON Web Token (JWT) Profile for OAuth 
2.0 Access Tokens"

If I may, step in and offer a suggestion.

What if instead of "MUST NOT" replace with "SHOULD NOT"?

To me, (and this might be me), but MUST NOT describes a violation. As in I 
broke the law. Conversely, I interpret, "SHOULD NOT" as a recommendation, a 
guideline, best practice, etc.

If then the sentence went on to explain why you should not inspect the token, 
the risk is therefore known and on the "implementer" of the inspection.

Jared


On Mon, May 11, 2020 at 7:34 AM Denis 
<denis.i...@free.fr<mailto:denis.i...@free.fr>> wrote:
Hi Benjamin,

We are making progress since we now understand better each other. You wrote 
several sentences on which I agree:
"I do in fact agree that token inspection by a client can be useful in at least 
some situations".

"I fully support having privacy considerations sections that discuss the 
privacy properties of the protocol in question,
  even including aspects that are currently lacking.

"I do not believe that a JWT profile for OAuth use is the place to make changes 
to the core OAuth protocol that improve its privacy properties".
I also accept your apologies.

RFC 6749 is quite clear in section 1.4 that "The string [access token] is 
usually opaque to the client".
However, it does not mean that : "The client MUST NOT inspect the content of 
the access token".
I believe the wording I proposed corresponds to the reality:
There is no guarantee that token inspection can always be performed.
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to