refactor: extract OAuth helper functions and simplify provider state #1586
+465
−270
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.
Refactors OAuth 2.0 authentication implementation to expose reusable utilities.
Motivation and Context
The OAuth authentication logic was tightly coupled to the httpx auth provider, making it difficult for external tools (like MCP proxies or custom clients) to reuse core OAuth functionality. This refactor extracts the OAuth primitives into standalone utilities that can be used independently.
Key improvements:
How Has This Been Tested?
Existing test suite updated to reflect new structure. All tests pass.
Breaking Changes
None - this is a pure refactor with no API changes.
Types of changes
Checklist
Additional context
New utilities added:
client/auth/utils.py: OAuth protocol helpers (discovery URLs, WWW-Authenticate parsing, scope selection, response handlers)shared/auth_utils.py: PKCE generation and token expiry calculationThe main OAuth2Auth provider (
client/auth/oauth2.py) now delegates to these utilities, reducing from 221 lines to 93 lines of core logic.