Labels: ready-to-code
Depends on: Issue 11
Implement TokenExchangeManager for per-user Kagenti identity delegation via RFC 8693 OAuth2 Token Exchange, with graceful fallback to service-account token on all failures.
Tasks
From openspec/changes/security-safety-governance/tasks.md section 7:
- 7.1 Create
TokenExchangeManager implementing RFC 8693
- 7.2 Add per-user token caching with TTL from token expiry
- 7.3 Add concurrent exchange deduplication
- 7.4 Add graceful fallback to service-account token
- 7.5 Add config schema:
boost.kagenti.auth.tokenExchange.*
- 7.6 Integrate into
KagentiApiClient.requestCore()
- 7.7 Extract user OIDC token from configurable request header
Specifications
openspec/changes/security-safety-governance/specs/access-control/spec.md — Token exchange scenarios
openspec/changes/security-safety-governance/design.md — Decision 4 (backend-only with graceful fallback)
Labels:
ready-to-codeDepends on: Issue 11
Implement
TokenExchangeManagerfor per-user Kagenti identity delegation via RFC 8693 OAuth2 Token Exchange, with graceful fallback to service-account token on all failures.Tasks
From
openspec/changes/security-safety-governance/tasks.mdsection 7:TokenExchangeManagerimplementing RFC 8693boost.kagenti.auth.tokenExchange.*KagentiApiClient.requestCore()Specifications
openspec/changes/security-safety-governance/specs/access-control/spec.md— Token exchange scenariosopenspec/changes/security-safety-governance/design.md— Decision 4 (backend-only with graceful fallback)