You're still stuck with a delay of you fetching the list of revoked tokens and someone getting to your service. And that delay allows someone to come in with a compromised token. However, with short expiration dates you achieve the same. You shorten the duration that a token is valid for. Assume a token is revoked. It can be used against any target until they refresh their revocation list. Same goes with just tokens…
Token revocation
11–20 of 36 posts
Re: Token revocation
#12My current strategy for dealing with this is to add application-specific safeguards that re-verify the assigned roles of whatever user principal is present during more sensitive operations. If we detect that the user principal+token is no longer authorized, we can revoke our session bound to the AAD token and any further access is effectively restricted.
I've seen some other approaches, but I don't think you will get one that fits like a glove without making some alterations to the actual application which is consuming these tokens.
Re: Token revocation
#13Re: Token revocation
#14Re: Token revocation
#15You're still stuck with a delay of you fetching the list of revoked tokens and someone getting to your service. And that delay allows someone to come in with a compromised token. However, with short expiration dates you achieve the same. You shorten the duration that a token is valid for. Assume a token is revoked. It can be used against any target until they refresh their revocation list. Same goes with just tokens…
Unless you push the revocation list changes immediately to the service instances.
Re: Token revocation
#16You're still stuck with a delay of you fetching the list of revoked tokens and someone getting to your service. And that delay allows someone to come in with a compromised token. However, with short expiration dates you achieve the same. You shorten the duration that a token is valid for. Assume a token is revoked. It can be used against any target until they refresh their revocation list. Same goes with just tokens…
Re: Token revocation
#171. Lost/stolen access token. 2. Lost/stolen refresh token. 3. Disabled account.
In the case of systems like Azure where access tokens have an "audience", they could theoretically send a revocation message to the audience endpoint (which would only need to care about revocations younger than the duration of access tokens, much like a CRL).
Revoking a refresh token would probably need to revoke all access (and perhaps identity) tokens associated with it.
Disabling an account would just need to revoke all tokens associated with it.
Re: Token revocation
#18I feel like I'm missing some critical, but non-obvious threat model here.
Re: Token revocation
#19I'm still skeptical whether expiration times wouldn't be adequate for many applications, assuming these times are short enough, like five minutes?
Same idea with certificates right? No-one checks certificate revocation lists, so Google is shortening maximum lifetimes reducing chance of long-time malicious use.
Re: Token revocation
#20You're still stuck with a delay of you fetching the list of revoked tokens and someone getting to your service. And that delay allows someone to come in with a compromised token. However, with short expiration dates you achieve the same. You shorten the duration that a token is valid for. Assume a token is revoked. It can be used against any target until they refresh their revocation list. Same goes with just tokens…
This of course means that your downtime tolerance for the token distribution is quite low, but still better than checking revocation on each request.
You can also flip it and track the state of every app server, revocation waits until they have all updated (or been confirmed dead) but now revocation time is unbounded. (And you are tracking more mutable state)