Authorization server: narrow a JWT-bearer access token to one MCP call with authorization_details
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- go
- Área
- api, authentication, security
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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).
- Lenguaje dominante
- Go
- Estrellas
- 2.3k
- Forks
- 326
- Merge medio
- 1 d 53 min
- PR fusionados (30 d)
- 155
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de stacklok/toolhive
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
stacklok/toolhive#6925 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
proxyrunner tool-filter middleware strips SEP-2322 Modern envelope from tools/list, breaking vMCP health checksQuizá libre de nuevo @alex-feel la tomó hace 46 días y no hay ningún pull request abierto. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
stacklok/toolhive#6684 · 5 comentarios · 1 reacción · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
HttpClientBuilder.Build() ignores HTTP(S)_PROXY (auth-server OAuth/DCR calls bypass forward proxy)Posiblemente ocupada @schonmann la tomó hace 37 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
stacklok/toolhive#6671 · 2 comentarios · 1 reacción · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Delete the dead pkg/vmcp/server/adapter packageQuizá libre de nuevo @suantea la tomó hace 31 días y no hay ningún pull request abierto. Abiertoneeds-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
Outgoing strategies differ on no-subject-provider fallback (xaa hard-fails, token_exchange and aws_sts fall back) and it is undocumentedQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
Todos los issues de stacklok/toolhive
Issues similares
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
fabriziosalmi/secure-proxy-manager#619 ·
Los mantenedores suelen responder en 1 día
-
bug needs-triage P1 tier:1-mechanical
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
krakenhavoc/cmd_and_ctrl#5434 ·
Los mantenedores suelen responder en 1 día
-
go good first issue help wanted up-for-grabs
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
andrewsiah/agentswarm-data-tasks#117 ·
Los mantenedores suelen responder en 1 día
-
openshell image: provide /sandbox so the workspace path can be uniform across OpenShell driversAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
Los mantenedores suelen responder en 1 día
-
C:dataplane
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
yanet-platform/yanet2#3395 ·
Los mantenedores suelen responder en 1 día