This is why you can’t have a blacklist of manually expired tokens, one of the most commonly raised issues in JWT.
This is why you can’t have a blacklist of manually expired tokens, one of the most commonly raised issues in JWT.
But, isn't there's a difference between needing to centrally coordinate a common protocol vs central management of state of individual tokens? JWT protocol itself can be regarded as some centralised definition of how different services agree to interoperate with JWT tokens, that all token producers and consumers must implement. It doesn't logically follow that we need a distributed DB that must be queried at runtime when processing tokens to implement JWT support. Similarly for nonstandard variations on JWT protocol that are independent of the state stored in any given token -- all services would need to embed some library that can understand the new (centrally defined) protocol, but there would not need to be any dependency on an external database at runtime.
Even with standard usage of JWT tokens, does there not need to be some degree of agreement and coordination between token producers about what a particular scope string means & agreement between different services in the same ecosystem not to use the same scope string to mean two completely different things?
I agree with you on this point. Actually there are already some "common" scopes, for instance OpenID Connect defines some scopes ("openid", "profile", "email", ...): https://openid.net/specs/openid-connect-core-1_0.html#ScopeC...
However I don't think (to be confirmed) there is a IANA registry for scopes (source: https://www.iana.org/protocols)
But there is one for claims in JWT:
Even though there are gradations in how much you do of one versus the other, and you can ship code as data in the db—you don't have to do that.