Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[Auth] OAuth proxy / DCR facade for non-DCR providers (e.g. Entra ID + Claude Code)

Aperta
#1,446 4 commenti 11 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
25/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
csharp

Direzione di ricerca

Inizia esaminando la superficie di autenticazione in ModelContextProtocol.AspNetCore e il design collegato di FastMCP OAuthProxy/OIDCProxy. Definisci la facciata DCR, l’inoltro del callback, la factory dei token, le protezioni per State e PKCE, l’OIDC discovery e i confini di storage di IDataProtector/IDistributedCache; il lavoro è completato quando Claude Code può autenticarsi tramite il proxy senza esporre i token upstream.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

area-auth enhancement P2 ready for work

Is your feature request related to a problem? Please describe.

Securing an MCP server with Entra ID is not workable when the connecting client is Claude Code. Entra ID doesn't support Dynamic Client Registration, and Claude Code has no app registration and no client_metadata_document_uri to offer, so there's no client_id to present and no supported registration path. Claude Code simply can't authenticate against an Entra-backed MCP server today.

This is distinct from #648 / PR #1402, which fix the resource= parameter bug for clients that already have a pre-registered client_id. That fix is necessary but not sufficient: our problem is upstream of it.

Describe the solution you'd like

A server-side OAuth proxy / DCR facade in ModelContextProtocol.AspNetCore, similar to what FastMCP (Python) ships as OAuthProxy / OIDCProxy. At a high level it would:

  1. Present a DCR-compliant surface to MCP clients: handle POST /register and return pre-registered credentials rather than attempting real DCR against the upstream provider
  2. Handle callback forwarding: store the MCP client's dynamic redirect URI, use the server's fixed redirect URI with the upstream provider, and forward back to the client after token exchange
  3. Issue its own short-lived JWTs to MCP clients rather than forwarding the upstream token (token factory pattern), preventing token passthrough
  4. Encrypt and store upstream tokens server-side using IDataProtector and IDistributedCache
  5. Support OIDC discovery: Entra exposes /.well-known/openid-configuration, so endpoints should be auto-discoverable rather than manually configured

Describe alternatives you've considered

  • External sidecar proxy (e.g. mcp-auth-proxy): works, but adds ops complexity with no idiomatic .NET integration
  • Use a DCR-capable AS (Auth0, WorkOS): viable, but forces a third-party IdP dependency on teams already standardised on Entra
  • Pre-registration + surfacing client_id in PRM: only works for clients that support pre-registration or CIMD; Claude Code supports neither

Additional context

FastMCP's implementation is a useful reference for the security design: it includes confused deputy mitigation via state cookie binding, PKCE validation at both the client-to-proxy and proxy-to-upstream legs, and a token factory that ensures upstream tokens are never exposed to MCP clients.

Lingua principale
C#
Stelle
4.5k
Fork
814
Merge medio
9g 19h
PR unite (30g)
4

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di modelcontextprotocol/csharp-sdk

Tutte le issue di modelcontextprotocol/csharp-sdk

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.