feat: add Supabase Auth identifier to OAuth redirect URLs #2299
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.
Summary
Adds a Supabase Auth identifier (
sb) to URL fragments in all OAuth redirect responses to help clients distinguish Supabase Auth redirects from third-party OAuth flows.Problem
auth-js GoTrueClient currently intercepts all URL fragments containing
access_token, including those from non-Supabase OAuth providers. This causes unintended logouts and authentication issues when users have other OAuth flows in their applications.Related issue: supabase/supabase-js#1697
Solution
Added an empty
sbparameter to the URL fragment in all redirect responses:AsRedirectURL)__isAuthError, but adding it for error to be fault-tolerant, and non-supabase-sdk cases)Example redirect URL:
https://example.com/callback#access_token=xxx&refresh_token=yyy&expires_in=3600&sbClients can now check for the presence of
sbin the fragment to confirm the redirect originated from Supabase Auth.