-
Notifications
You must be signed in to change notification settings - Fork 989
Permalink
Choose a base ref
{{ refName }}
default
Choose a head ref
{{ refName }}
default
Comparing changes
Choose two branches to see what’s changed or to start a new pull request.
If you need to, you can also or
learn more about diff comparisons.
Open a pull request
Create a new pull request by comparing changes across two branches. If you need to, you can also .
Learn more about diff comparisons here.
base repository: modelcontextprotocol/typescript-sdk
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
...
head repository: modelcontextprotocol/typescript-sdk
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: ochafik/auth-compliance-tests
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
- 2 commits
- 9 files changed
- 2 contributors
Commits on Jun 17, 2025
-
OAuth Compliance Test Suite Implementation
## Summary Complete implementation and debugging of comprehensive OAuth 2.0 compliance tests for the MCP TypeScript SDK, achieving 100% test coverage across OAuth flows, PKCE security, and Resource Indicators specifications. ## Changes ### ✅ OAuth Compliance Test Infrastructure - **Mock OAuth Server** (`src/compliance/fixtures/oauth-test-server.ts`) - Full OAuth 2.0 authorization server implementation with Express - Configurable compliance modes (PKCE, Resource Indicators, validation strictness) - Complete endpoint suite: authorization, token exchange, introspection, revocation - Metadata discovery with RFC 8414/OpenID Connect/RFC 8707 support - Dynamic client registration (RFC 7591) and error simulation capabilities - **Test Utilities** (`src/compliance/fixtures/test-utils.ts`) - `TestOAuthClientProvider`: Mock OAuth client with redirect simulation - `OAuthFlowTester`: Orchestrates guided/quick OAuth flows with compliance verification - `ComplianceAssertions`: Validates PKCE, Resource Indicators, and security requirements - Type-safe flow handling with comprehensive error management - **Test Data Configuration** (`src/compliance/fixtures/test-data.ts`) - Predefined OAuth clients (public, confidential, resource-limited) - Test resources with path/query variations - Scope configurations for different access levels ### ✅ Complete Test Suite Coverage (38 Tests - 100% Passing) **OAuth Flows Suite** (`oauth-flows.test.ts`) - **15 tests** - Metadata discovery via multiple well-known endpoints - Dynamic client registration (RFC 7591) - Authorization URL generation and redirect handling - Token exchange with proper error scenarios - Complete guided and quick OAuth flow integration - Multi-server authentication with token isolation **PKCE Compliance Suite** (`pkce-compliance.test.ts`) - **13 tests** - RFC 7636 code verifier/challenge format validation - SHA-256 challenge calculation and base64url encoding - Complete PKCE flow with verifier validation - Server PKCE enforcement and legacy compatibility - Replay attack prevention and security validation **Resource Indicators Suite** (`resource-indicators.test.ts`) - **10 tests** - RFC 8707 resource parameter format validation - Token exchange consistency between authorization/token requests - Protected resource metadata discovery - Server requirement enforcement for resource parameters - URI validation with fragment restrictions ### ✅ Technical Implementation **TypeScript Type Safety** - Eliminated all `any` types from test infrastructure - Implemented proper union types for flow results (`FlowStepResult`, `AuthRedirectResult`) - Type-safe error handling with `FlowStepError` interface - Full IntelliSense support and compile-time validation **Flow Simulation Architecture** - **Guided OAuth Flow**: Step-by-step debugging with inspection points - **Quick OAuth Flow**: Automated end-to-end testing with proper redirect handling - Real HTTP request testing (no fetch mocking) for integration realism - PKCE challenge generation with cryptographically correct SHA-256 hashing **Test Environment Isolation** - Port isolation per test suite to prevent conflicts - Real `fetch` restoration to avoid Jest mock interference - Configurable server compliance modes for targeted testing - Proper cleanup of server instances and test state ### ✅ Bug Fixes & Resolution **Quick OAuth Flow Automation** - **Issue**: Authorization code extraction from wrong URL source - **Fix**: Proper authorization server redirect simulation via `fetch` with manual redirect handling **PKCE Detection Logic** - **Issue**: Compliance verification missed PKCE usage in certain flow structures - **Fix**: Enhanced detection across multiple result formats with type-safe URL parsing **Multi-Server Token Isolation** - **Issue**: Token isolation test failing due to underlying flow issues - **Fix**: Resolved through quick flow automation fixes, ensuring proper token separation **Protected Resource Metadata** - **Issue**: Hardcoded ports conflicting with dynamic test environments - **Fix**: Server URL configuration override to match test port assignments **Code Quality** - Removed 24 lint violations (unused imports, unsafe `any` types) - Fixed all TypeScript compilation errors - Ensured build compatibility across ESM/CJS targets ### ✅ Documentation Overhaul **Consolidated Documentation** (`docs/oauth-compliance-tests.md` - 22KB) - **Complete Architecture**: Test infrastructure, mock server, utilities - **Detailed Test Coverage**: All 38 tests with RFC references and validation details - **OAuth Flow Mechanics**: Guided vs Quick flow explanation with use cases - **Compliance Verification**: PKCE detection, resource validation, security requirements - **Technical Implementation**: Type safety, Jest integration, troubleshooting guide - **Standards References**: OAuth 2.0 (RFC 6749), PKCE (RFC 7636), Resource Indicators (RFC 8707) **Cleanup** - Removed fragmented `CLAUDE.md` with outdated status information - Eliminated 9 intermediate analysis files (temporary implementation artifacts) - Centralized all auth test documentation in single authoritative source ## Validation ### Test Results - ✅ **All 38 OAuth compliance tests passing** (100% success rate) - ✅ **Build succeeds** with no TypeScript errors or warnings - ✅ **Lint clean** with no code quality issues - ✅ **Full offline execution** - no external OAuth provider dependencies ### Compliance Coverage - ✅ **OAuth 2.0 (RFC 6749)**: Complete authorization flow validation - ✅ **PKCE (RFC 7636)**: Security against authorization code injection attacks - ✅ **Resource Indicators (RFC 8707)**: Multi-resource OAuth scenarios - ✅ **OAuth Metadata (RFC 8414)**: Metadata discovery and validation - ✅ **Dynamic Registration (RFC 7591)**: Client registration capabilities ### Integration Quality - 🔄 **Auth Debugger Alignment**: Tests mirror MCP Inspector Auth Debugger functionality - 🔒 **Security Best Practices**: PKCE mandatory, proper error handling, secure token storage - 🏗️ **Production Ready**: Comprehensive error scenarios, type safety, proper isolation ## Impact This comprehensive OAuth compliance test suite ensures: 1. **Robust Authentication**: Full validation of OAuth 2.0 flows prevents authentication failures 2. **Security Compliance**: PKCE implementation validated against RFC 7636 security requirements 3. **Multi-Resource Support**: RFC 8707 Resource Indicators enable complex OAuth scenarios 4. **Developer Confidence**: 100% test coverage provides security in SDK authentication reliability 5. **Integration Alignment**: Tests ensure SDK matches Auth Debugger behavior for consistency The implementation validates the MCP TypeScript SDK's OAuth capabilities against official specifications, providing confidence for production usage across diverse authentication scenarios. --- **Test Infrastructure**: Mock OAuth server + test utilities + comprehensive assertions **Coverage**: 38 tests across 3 specifications (OAuth 2.0, PKCE, Resource Indicators) **Quality**: 100% type-safe, lint-clean, fully documented **Standards**: RFC 6749, RFC 7636, RFC 8707 compliance 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 263a671 - Browse repository at this point
Copy the full SHA 263a671View commit details -
docs: add comprehensive external testing analysis to OAuth compliance…
… docs - Add detailed analysis of testing external OAuth clients against mock server - Document testing real OAuth servers (Google, GitHub, etc.) against SDK client - Provide end-to-end testing architecture for real clients + real servers - Include implementation roadmap with 3-phase approach and realistic timelines - Add real-world testing scenarios with specific setup instructions - Document security considerations and credential management best practices - Provide technical analysis of current capabilities, limitations, and solutions Key insights: - Current infrastructure is highly extensible with moderate engineering effort - Phase 1 (external client testing) provides immediate value in 1-2 weeks - Network-enabled mock server + HTTPS support enables most external testing - Server adapter pattern supports major OAuth providers (Google, GitHub, Azure AD) - End-to-end testing requires traffic capture and protocol validation Estimated effort: 8-12 engineer weeks for complete external testing capability 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for cb319fd - Browse repository at this point
Copy the full SHA cb319fdView commit details
Loading
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff main...ochafik/auth-compliance-tests