fix: redirect URI should be the last parameter #874
Closed
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.
https://datatracker.ietf.org/doc/html/rfc6749#section-3.1.2 says:
Query parameters added after the redirect URI may be interpreted as part of the redirect URI, resulting in an "Invalid Redirect URI" error from the authorization server. Adding
redirect_uri
as the last query parameter seems to be an easy way to avoid this.Example:
Now the authorization server might think that the redirect URI is
"https://example.org/oauth/callback/abc&scope=my-scope&state=my-state&access_type=offline"
, which does not match the registered URI"https://example.org/oauth/callback/abc"
.After this PR, the resulting authorization_url would be
"https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=my-client-id&scope=my-scope&state=my-state&access_type=offline&redirect_uri=https://example.org/oauth/callback/abc"
, so theredirect_uri
cannot be interpreted in a wrong way.