feat(providers): support multiple dynamic credential injections on one request
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
- rust
- Área
- api, authentication, security
Línea de trabajo
Empieza por localizar los puntos de entrada para la coincidencia de endpoints de proveedores, la resolución dinámica de concesiones de tokens y la inyección de cabeceras salientes; el issue no menciona archivos ni tests. Usa los criterios de aceptación para definir la cobertura de concesiones independientes, atomicidad ante fallos, conflictos, redacción, caching y aislamiento; terminado significa que se han verificado todos los comportamientos de seguridad y concurrencia enumerados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
Support multiple independently resolved dynamic credential injections on one matching outbound HTTP request, including a SPIFFE JWT-SVID in a configured custom header and an independent Authorization: Bearer access token.
Problem
The POC has an outbound route where two separate security layers protect the same request:
- An identity-aware proxy or service requires a dynamically obtained SPIFFE JWT-SVID in a configured custom header.
- The destination service requires a separately acquired short-lived bearer access token in
Authorization.
Providers v2 can describe bearer or custom-header placement for a dynamic token grant, but the provider/request contract needs to support composing multiple dynamic credentials for the same endpoint without materializing either token in the agent environment or adding an application-side proxy.
This is not a request to duplicate one token into arbitrary headers. Each injection has its own issuer, audience, scopes, cache lifetime, and failure semantics.
Requested behavior
- Allow a provider endpoint to reference multiple dynamic token-grant credentials for one request.
- Resolve and inject each credential only after endpoint and L7 policy admission.
- Support at least:
- injection of a SPIFFE JWT-SVID into a provider-configured custom header for Teleport-based or other SPIFFE-compatible services;
- an independently resolved
Authorization: Bearer <token>credential for the destination service.
- Keep grant configuration independent per credential: token endpoint, JWT-SVID audience, resource audience, scopes, header placement, and cache TTL.
- Define deterministic conflict behavior when the agent supplies either protected header. The default should replace or reject according to explicit provider policy, never silently forward an untrusted agent value.
- Resolve all required credentials before forwarding; if any grant fails, inject none and fail closed.
- Redact both credentials from agent-visible state, logs, traces, errors, and policy events.
Acceptance criteria
- One HTTPS request matching a provider endpoint can receive both a SPIFFE JWT-SVID in a provider-configured custom header and an independently acquired bearer token.
- The two grants may use different token endpoints, audiences, scopes, and cache expiration times.
- Actual credential values and reusable credential handles are never exposed to the sandbox or agent. A non-secret opaque placeholder may be visible to the agent, provided credential substitution remains endpoint-scoped and enforced by the Supervisor.
- Header injection occurs only for the matched scheme, host, port, and path and only when TLS inspection is active.
- A failure in either grant prevents the upstream request and does not leave a partially injected request.
- Concurrent requests do not mix credentials across sandbox, provider instance, subject, audience, or endpoint.
- Tests cover cache hit/expiry, independent refresh, agent-supplied header conflicts, one-grant failure, redaction, and cross-sandbox isolation.
Example use case
Agent -> OpenShell Supervisor -> identity-aware proxy -> destination service
The Supervisor performs last-mile injection of:
- A SPIFFE JWT-SVID required by the identity-aware proxy.
- A separate short-lived bearer token required by the destination service.
The two credentials may have different issuers, audiences, scopes, token endpoints, and expiration times. Neither credential is exposed to the agent.
- Lenguaje dominante
- Rust
- Estrellas
- 8.7k
- Forks
- 1.3k
- Merge medio
- 2 d 6 h
- PR fusionados (30 d)
- 236
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 NVIDIA/OpenShell
-
area:docs
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
-
state:triage-needed
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
area:cli state:validated
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
state:triage-needed
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
area:build spike state:review-ready state:stale
Dificultad 2/5 Medio día Aptitud para principiantes 68/100
Todos los issues de NVIDIA/OpenShell
Issues similares
-
has_tail_capacity wraps and get_writable_raw_unchecked commits raw_len before the bounds check Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
stratum-mining/stratum#2404 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
Axis areas are always keyboard-focusable (Sense::drag), even with allow_axis_zoom_drag(false) Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
bug team:backend track:services-maintenance
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
cowprotocol/services#4950 ·