Thanks for bringing the revocation topic up. In brief:

 

*       I agree on the comments that differentiate between userinfo and 
introspection- userinfo doesn’t really play a role in validation hence I’d keep 
it out of the JWT AT doc.
*       I agree that the introspection endpoint shouldn’t do anything special 
or different for JWT ATs

 

The last point is more involved. 
I think that using introduction just for checking revocation would be overkill 
and wasteful, no point sending the entire token if it has been already 
validated (bandwidth) and no point for the AS to repeat checks already done by 
the RS, especially at large scale and for chatty solutions.
One of the reasons for making `JTI` mandatory in the profile is to provide a 
mechanism for handling AT revocation easier. There is no standard today for 
doing that. 
In some 1:1 conversations on the topic, one solution that sounds promising is 
for the AS to publish a list per each resource/client including all the revoked 
JTIs. The RS is free to fetch that list at any time and incorporate local 
revocation checks at whatever frequency it wants. 
The naïve alternative is to have an endpoint on the AS the RS can use to 
inquire on whether a given JTI has been revoked. That is less wasteful than 
doing a full introspection, but still network hungry.
Both alternatives have implications on the AS, now saddled with tracking 
possibly large numbers of tokens. There are heuristics to handle that (eg have 
identifiers for sessions and use those to manage revocations, rather than 
trating every AT as independent) and ultimately it would not be in the purview 
of the protocol to worry about that, but something to consider when 
implementing.

 

Would it be useful to produce normative guidance on one of the approaches 
above? If yes, where would that live? I am not sure the JWT AT profile is the 
right place, perhaps an addendum to the current revocation specs?

 

 

From: OAuth <oauth-boun...@ietf.org> On Behalf Of Thomas Broyer
Sent: Tuesday, October 6, 2020 5:17 AM
To: Nicolas Mora <nico...@babelouest.org>
Cc: <oauth@ietf.org> <oauth@ietf.org>
Subject: Re: [OAUTH-WG] JWT access tokens and the revocation endpoint

 

 

 

On Sun, Oct 4, 2020 at 6:55 PM Nicolas Mora <nico...@babelouest.org 
<mailto:nico...@babelouest.org> > wrote:

Hello,

Le 20-10-04 à 11 h 27, Thomas Broyer a écrit :

>     There might be some kind of pushed events between the AS and the RS when
>     a JWT AT is revoked, to allow the RS not to introspect a JWT AT at all.
>     Like this, the RS knows if a JWT AT has been revoked or not.
> 
> 
> If there are some kind of pushed events between the AS and the RS, then
> it could push the revoked (and/or expired) opaque AT too, giving almost
> no advantage to JWT ATs.
>
Not necessarily, let's say the AS informs the RS only of the revoked
ATs, when a RS checks an AT, it verifies the signature first, then the
claims, then checks if the AT has been revoked by checking its internal
list filled by the AS pushed events.

 

Well, you were the one saying that “the advantage of using a JWT AT is close to 
0” 😉

(and I was the one bringing the advantage of being able to do some 
verifications prior to contacting the introspection endpoint, btw)

In any case, for an opaque AT, you only get to introspect it once to know its 
expiration (and you can cache the result); so those preliminary checks you can 
do with a JWT only save you one introspection request IFF the token is not 
valid, e.g. expired; if it's valid or has been revoked, then you'll have to 
introspect it anyway.

And if you imagine that "pushed events" mechanism, then it would work the same 
for an opaque AT or a JWT AT, saving you the introspection requests that would 
otherwise be mandatory for checking revocation.

 

So (and I know it wasn't the original subject of the discussion), a JWT AT can 
save you, compared to an opaque AT:

 * a call to the userinfo endpoint if it embeds the claims you need

 * a call to the introspection endpoint if it's expired or otherwise invalid, 
and/or some memory/storage space that you could use as a cache for that 
information for an opaque AT (to avoid issuing other introspection requests, as 
an optimization / compromise)

 

-- 

Thomas Broyer
/tɔ.ma.bʁwa.je/ <http://xn--nna.ma.xn--bwa-xxb.je/> 

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

Reply via email to