-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: revoke token chain by consent challenge ID (#3932)
This change adds the ability to revoke token chains by "consent challenge ID". ## "Consent sessions" Each time the user goes through a `GET /oauth2/auth?response_type=code&...` auth code flow, we persist a new "consent session" to the database. This is independent of whether the user has previously logged in and/or granted consent, or whether the user was actively asked to grant consent by the consent app. A successful journey through the auth code flow results in a new "consent session". This consent session is uniquely identified by its "consent challenge ID". This ID is obtained from the [`GET /admin/oauth2/auth/requests/consent?consent_challenge=...`](https://www.ory.sh/docs/reference/api#tag/oAuth2/operation/getOAuth2ConsentRequest) API. Note that it is not the same as the `consent_challenge=...` query parameter! Any access and refresh tokens obtained from a token exchange following that particular user journey are bound to that consent session. We call the totality of all refresh+access tokens derived from a particular consent session a "token chain". ## Token revocation Revoking an access token (AT) is simple: send the AT to `/oauth2/revoke` and it is revoked. If this AT was derived from a refresh token (RT), the parent RT is not revoked. Revoking a refresh token (RT) also revokes associated access tokens. ## Revocation by consent challenge ID During an authorization code flow, save the consent challenge ID into the access token session data: ``` GET /admin/oauth2/auth/requests/consent?consent_challenge=abcdef ``` Response: ``` { "acr": ..., "challenge": "G_TIM3XABG14UwIgDoT1DRfipjhC1uix" # <- this is the ID we need ... } ``` Accept the consent request: ``` PUT /admin/oauth2/auth/requests/consent/accept?consent_challenge=abcdef { "remember": true, "remember_for": 3600, "session": { "access_token": { "ccid": "G_TIM3XABG14UwIgDoT1DRfipjhC1uix" } }, ... } ``` To revoke the token chain associated with this consent challenge ID, use ``` POST admin/oauth2/auth/sessions/consent?consent_challenge_id=G_TIM3XABG14UwIgDoT1DRfipjhC1uix ```
- Loading branch information
Showing
23 changed files
with
234 additions
and
372 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
Oops, something went wrong.