Authorization server: narrow a JWT-bearer access token to one MCP call with authorization_details
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- go
- Ambito
- api, authentication, security
Direzione di ricerca
Start at the authorization server’s RFC 7523 JWT-bearer grant handling and token issuance path; the issue does not name files or tests. Read RFC 9396 and the linked #6886, #6887, and #7030 for the surrounding requirements, then trace how client token lifetimes are configured. Done means the acceptance cases pass, including rejection reasons, narrowing, per-client lifetime, and unchanged behavior without authorization_details.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Part of #6886. Related: #6887 (returns the granted authorization_details in the token response; does not accept or narrow a request), #6909, #6910, #6912.
Problem: a client that redeems an ID-JAG at the gateway's authorization server (RFC 7523 JWT-bearer grant) gets an access token good for any call to the resource until it expires. A client that sends tool calls on behalf of a separate, more trusted authorizer (Mecatl: the harness sends the call, its identity broker authorizes it and redeems the ID-JAG) should hold a token that serves only the call the authorizer approved. Today the token cannot be narrowed to one call.
Today: the server already parses the authorization_details entry, but keeps it out of the issued JWT.
Change: on the JWT-bearer grant, accept an RFC 9396 authorization_details request with one entry of a new type, and copy it into the issued access token.
- Entry type
https://toolhive.dev/mcp_tool_call, one of:- a tool call:
server,tool(the name the vMCP routes by, as inparams.name),arguments_sha256(lowercase hex SHA-256 of the RFC 8785 serialization ofparams.arguments, or of{}when absent),operation_id; - a list call:
server,method(tools/listor another list method).
- a tool call:
- Narrowing only: the entry can only restrict the token, never widen what the grant, client, or resource would otherwise allow. Exactly one entry; a malformed entry, an unknown field, or more than one entry is refused with
invalid_authorization_details(RFC 9396 §5). - In the token: the entry is copied unchanged into the access token's
authorization_detailsclaim, and returned in the token response (with #6887). - Lifetime per client: a configurable access-token lifetime for a client (here, Mecatl's
mecatlclient), so these tokens can live seconds while other clients keep the default. - Reason code: refusals carry a reason code in
error_description, in the grammar of #7030.
Acceptance:
- a JWT-bearer redemption with a valid tool-call or list-call entry returns a token whose
authorization_detailsequals the requested entry; - a malformed entry, two entries, or an unknown type is refused with
invalid_authorization_detailsand its reason; - the entry never adds a resource, scope, or audience the redemption would not otherwise grant;
- a client with a configured lifetime gets tokens with that lifetime; other clients are unaffected;
- a redemption without
authorization_detailsbehaves exactly as today.
Context: Mecatl agent identity design, credentials-and-lifecycle.md step (8) ("The argument hash") and implementation.md "ToolHive work list". Tracked in stacklok/mecatl#2570 (phase 2).
- Lingua principale
- Go
- Stelle
- 2.3k
- Fork
- 326
- Merge medio
- 1g 53m
- PR unite (30g)
- 155
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di stacklok/toolhive
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
stacklok/toolhive#6925 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
proxyrunner tool-filter middleware strips SEP-2322 Modern envelope from tools/list, breaking vMCP health checksForse di nuovo libera @alex-feel l’ha presa 46 giorni fa e non c’è nessuna pull request aperta. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
stacklok/toolhive#6684 · 5 commenti · 1 reazione · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
HttpClientBuilder.Build() ignores HTTP(S)_PROXY (auth-server OAuth/DCR calls bypass forward proxy)Forse già presa @schonmann l’ha presa 37 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
stacklok/toolhive#6671 · 2 commenti · 1 reazione · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Delete the dead pkg/vmcp/server/adapter packageForse di nuovo libera @suantea l’ha presa 31 giorni fa e non c’è nessuna pull request aperta. Apertaneeds-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
Outgoing strategies differ on no-subject-provider fallback (xaa hard-fails, token_exchange and aws_sts fall back) and it is undocumentedForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di stacklok/toolhive
Issue simili
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
fabriziosalmi/secure-proxy-manager#619 ·
I maintainer di solito rispondono entro 1 giorno
-
bug needs-triage P1 tier:1-mechanical
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
krakenhavoc/cmd_and_ctrl#5434 ·
I maintainer di solito rispondono entro 1 giorno
-
go good first issue help wanted up-for-grabs
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
andrewsiah/agentswarm-data-tasks#117 ·
I maintainer di solito rispondono entro 1 giorno
-
openshell image: provide /sandbox so the workspace path can be uniform across OpenShell driversAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
I maintainer di solito rispondono entro 1 giorno
-
C:dataplane
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
yanet-platform/yanet2#3395 ·
I maintainer di solito rispondono entro 1 giorno