Skip to content

Add OAuth Protected Resource Metadata support #807

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 11 commits into
base: main
Choose a base branch
from

Conversation

imfing
Copy link

@imfing imfing commented May 26, 2025

This PR adds support for RFC 9728 Section 5.1 – "WWW-Authenticate" Response, enabling proper OAuth Protected Resource Metadata responses from the server, and aligns with the MCP TypeScript SDK implementation.

Motivation and Context

How Has This Been Tested?

  • Unit tests

Breaking Changes

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

  • This change improves support for standardized OAuth 2.0 protected resource discovery.
  • May be useful for future integration with more OAuth-native tools and services.

imfing added 4 commits May 26, 2025 12:29
- Introduced OAuthProtectedResourceMetadata class for enhanced resource metadata handling.
- Updated create_auth_routes to include resource_server_url and resource_name parameters.
- Modified AuthSettings to include resource_server_url and resource_name fields.
- Adjusted MetadataHandler to accept both OAuthMetadata and OAuthProtectedResourceMetadata.
- Updated FastMCP to utilize new resource metadata features.

Signed-off-by: Xin Fu <xfu83@bloomberg.net>
- Updated RequireAuthMiddleware to accept an optional resource_metadata_url parameter for enhanced error handling.
- Adjusted create_auth_routes to include resource_server_url and resource_name parameters.
- Modified OAuthProtectedResourceMetadata to change resource_documentation type to AnyHttpUrl.
- Updated tests to reflect changes in resource_server_url and resource_name parameters.

Signed-off-by: Xin Fu <xfu83@bloomberg.net>
- Added resource_server_url and resource_name to AuthSettings for improved metadata handling.
- Updated FastMCP to utilize resource metadata URL in RequireAuthMiddleware.
- Introduced get_oauth_protected_resource_metadata_url function for generating resource metadata URLs.
- Modified tests to validate new metadata endpoints and middleware behavior.

Signed-off-by: Xin Fu <xfu83@bloomberg.net>
Signed-off-by: Xin Fu <xfu83@bloomberg.net>
imfing and others added 7 commits May 26, 2025 19:09
- Added a new method to discover OAuth Protected Resource Metadata, improving the handling of authorization server URLs.
- Updated the OAuthClientProvider to utilize the discovered protected resource metadata when fetching OAuth metadata.
- Refactored tests to validate the new discovery logic and ensure correct URL calls for protected resource and authorization server metadata.

Signed-off-by: Xin Fu <xfu83@bloomberg.net>
Signed-off-by: Xin Fu <xfu83@bloomberg.net>
Signed-off-by: Xin Fu <xfu83@bloomberg.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant