wip: doctor/cli/docs/api to vector db consolidation; api hardening for descriptions, tenant, and scopes; migrations and conversions of all DALs to EF v10
This commit is contained in:
@@ -2,6 +2,13 @@
|
||||
|
||||
This document is the canonical specification for the StellaOps Router system.
|
||||
|
||||
Tenant selection and header propagation contract: `docs/architecture/decisions/ADR-002-multi-tenant-same-api-key-selection.md`
|
||||
Service impact ledger: `docs/technical/architecture/multi-tenant-service-impact-ledger.md`
|
||||
Flow sequences: `docs/technical/architecture/multi-tenant-flow-sequences.md`
|
||||
Rollout policy: `docs/operations/multi-tenant-rollout-and-compatibility.md`
|
||||
|
||||
> **Dual-location clarification (updated 2026-02-22).** The Router (`src/Router/`) hosts the evolved `StellaOps.Gateway.WebService` with advanced features not present in `src/Gateway/`: configurable route tables via `GatewayRouteCatalog`, reverse proxy support, SPA fallback hosting, WebSocket routing, Valkey messaging transport integration, and `StellaOpsRouteResolver` for front-door dispatching. This is the current canonical deployment for HTTP ingress. A simpler version exists at `src/Gateway/` for basic ingress scenarios. See also [Gateway Architecture](../gateway/architecture.md).
|
||||
|
||||
## System Architecture
|
||||
|
||||
### Scope
|
||||
@@ -282,6 +289,16 @@ Request ─►│ ForwardedHeaders │
|
||||
▼
|
||||
```
|
||||
|
||||
### Identity Header Policy and Tenant Selection
|
||||
|
||||
- Gateway strips client-supplied reserved identity headers (`X-StellaOps-*`, legacy aliases, raw claim headers, and auth headers) before proxying.
|
||||
- Effective tenant is claim-derived from validated principal claims (`stellaops:tenant`, then bounded legacy `tid` fallback).
|
||||
- Per-request tenant override is disabled by default and only works when explicitly enabled with `Gateway:Auth:EnableTenantOverride=true` and the requested tenant exists in `stellaops:allowed_tenants`.
|
||||
- Authorization/DPoP passthrough is fail-closed:
|
||||
- route must be configured with `PreserveAuthHeaders=true`, and
|
||||
- route prefix must also be in the approved passthrough allow-list (`/connect`, `/console`, `/api/admin`).
|
||||
- Tenant override attempts are logged with deterministic fields including route, actor, requested tenant, and resolved tenant.
|
||||
|
||||
### Connection State
|
||||
|
||||
Per-connection state maintained by Gateway:
|
||||
|
||||
Reference in New Issue
Block a user