Files

10 lines
511 B
Plaintext

alice logs in and gets refresh token A.
An attacker copies A out of a log file.
alice's app refreshes: A -> B (A is now USED).
the attacker replays A: HTTP 401 {"error":"invalid_grant","error_description":"The refresh token is not valid"}
the family after the replay:
token A hash 7131712c status REVOKED
token B hash 1c626483 status REVOKED
alice's app now presents B: HTTP 401 (the innocent holder is signed out too)
B's access token on /api/me, no sid check: HTTP 200 (still inside its 5 minutes)