1.5 KiB
1.5 KiB
Excititor · Tenant-Aware Authority Prep (AOC-19-013)
- Date: 2025-11-20
- Scope: PREP-EXCITITOR-CORE-AOC-19-013-SEED-TENANT-AW
- Working directory:
src/Excititor/StellaOps.Excititor.WebService,src/Excititor/StellaOps.Excititor.Worker,src/Excititor/__Libraries/StellaOps.Excititor.Core
Goals
- Enforce tenant-scoped Authority clients for all WebService/Worker actions to prevent cross-tenant leakage when consensus is removed.
- Provide deterministic fixture/seed guidance for e2e tests.
Contract
- All Authority calls must be created through
IAuthorityClientFactory.Create(tenantId); factories that lack tenant must throw. - Configuration:
excititor:authority:baseUrl,excititor:authority:audience, per-tenantclientId/clientSecretretrieved via internal secret resolver (no cross-tenant cache). - Headers: include
X-Tenanton every outbound request; reject response lacking matchingtenantclaim. - Telemetry: meter
StellaOps.Excititor.Authcountersauthority.calltaggedtenant,operation,result(ok|unauthorized|forbidden|error).
Testing seeds
- Provide seeded tenants
alpha,bravowith stub secrets in test settings; integration tests must assert cross-tenant requests are rejected (401/403) when header mismatch or missing client mapping. - Fake Authority server returns tenant claim; tests validate enforcement and logs.
Acceptance for prep completion
- Tenant-scoped client contract, config keys, and test seeds documented; downstream tasks 19-013 can proceed using this as authority.