feat(providers): support multiple dynamic credential injections on one request
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
- rust
- Ambito
- api, authentication, security
Direzione di ricerca
Inizia individuando i punti di ingresso per la corrispondenza degli endpoint dei provider, la risoluzione dinamica delle concessioni di token e l'iniezione degli header in uscita; l'issue non indica file né test. Usa i criteri di accettazione per definire la copertura delle concessioni indipendenti, dell'atomicità in caso di errore, dei conflitti, della redazione, del caching e dell'isolamento; il lavoro è completato quando tutti i comportamenti di sicurezza e concorrenza elencati sono verificati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Rust
- Stelle
- 8.7k
- Fork
- 1.3k
- Merge medio
- 2g 7h
- PR unite (30g)
- 243
Guida per i contributori
Apri 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 NVIDIA/OpenShell
-
area:docs
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
-
state:triage-needed
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
area:cli state:validated
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
state:triage-needed
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
area:build spike state:review-ready state:stale
Difficoltà 2/5 Mezza giornata Idoneità per principianti 68/100
Tutte le issue di NVIDIA/OpenShell
Issue simili
-
risk:low runtime status:in-progress type:test
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
zeroclaw-labs/zeroclaw#11023 ·
-
good first issue refactor
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
EricSpencer00/Resilient#4835 · 1 commento ·
-
agent:ready documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
cesarferreira/stax#890 ·
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100