Repository navigation
fix(cli): revoke the sign-in that a new login replaces - #118
Merged
Merged
Conversation
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
telemetry loginreplaced the saved sign-in but left its refresh token valid at telemetry.dev, so each repeat sign-in left another working token behind. Now, once a new sign-in is saved, the CLI asks the server to revoke the token it replaced, the same waylogoutdoes. A cancelled or failed sign-in revokes nothing, and a failed revocation doesn't fail the sign-in.The old sign-in is read under the same lock as the write that replaces it. telemetry.dev treats revoking a refresh token that another command already rotated as token reuse, and then revokes every token the client holds for that person, including the sign-in that just finished. Reading the old sign-in before taking the lock left a window for that. A refresh that is still in flight while the sign-in completes can still hit it; the person would then need to run
telemetry loginagain.Revocation and
logoutnow share one function, which discovers the revocation endpoint each time instead of trusting a saved one.Closes #115.