fix: conditionally append scope parameter in authorization URL for DynamicAuthProvider #250084
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.
The DynamicAuthProvider was unconditionally appending the scope parameter to OAuth authorization URLs, even when the scope string was empty.
Per OAuth 2.0 specification (RFC 6749), the scope parameter is optional in authorization requests.
More specifically, when server receives an empty scope string,
"".split(" ") -> ['']can be problematic, e.g. in MCP TypeScript SDKhttps://github.com/modelcontextprotocol/typescript-sdk/blob/590d4841373fc4eb86ecc9079834353a98cb84a3/src/server/auth/handlers/authorize.ts#L125
This PR modified the authorization URL construction to only include the scope parameter when non-empty scopes are actually provided. This ensures better compatibility with OAuth providers and follows the specification's recommendation to omit optional parameters when not needed.