elsa-core/docs/codebase/CONCERNS.md

47 lines
2.7 KiB
Markdown
Raw Normal View History

# Codebase Concerns
## Top Risks
| Severity | Concern | Evidence | Impact | Suggested action |
|---|---|---|---|---|
| Medium | External sign-in completion spans session, grant, and link stores | `ExternalAuthenticationBroker.cs` | Partial writes are possible if a later store fails | Keep writes ordered and make completion operations idempotent |
| Medium | Custom sign-in trackers must preserve tenant/connection/subject/user scoping | `IExternalIdentitySignInTracker` | Incorrect implementations could update the wrong link | Require conformance tests for tracker implementations |
| Low | In-memory stores are single-node only | `InMemoryExternalIdentityProvisioner.cs` | State diverges across replicas | Use EF Core stores for multi-node deployments |
## Technical Debt
| Debt item | Why | Where | Risk | Suggested fix |
|---|---|---|---|---|
| Broker constructor has many dependencies | Broker owns several local and external flows | `ExternalAuthenticationBroker.cs` | Manual tests/benchmarks are costly to construct | Consider focused orchestration objects only when another change justifies it |
| `[TODO]` Repository-wide debt inventory | Investigation intentionally focused on external identity tracking | `docs/codebase/.codebase-scan.txt` | Other modules are not assessed here | Run an extended acquisition audit separately |
## Security Concerns
| Risk | OWASP | Evidence | Current mitigation | Gap |
|---|---|---|---|---|
| Cross-tenant link access | A01 | Identity-link endpoint/store filters | Tenant accessor plus tenant-scoped queries | Custom stores need equivalent tests |
| Subject/token disclosure | A02 | Safe endpoint DTO and redaction tests | HMAC subject storage and redaction | None found in this flow |
## Performance and Scaling Concerns
| Concern | Evidence | Symptom | Scaling risk | Suggested improvement |
|---|---|---|---|---|
| Compare-and-set tracking may retry under contention | `EFCoreExternalIdentityProvisioner.RecordSuccessfulSignInAsync` | Extra query/update round trip on races | Hot shared identities could retry | Retain unique tuple index and monitor contention |
## Fragile/High-Churn Areas
| Area | Why fragile | Churn signal | Safe change strategy |
|---|---|---|---|
| External authentication broker/persistence | Security-sensitive multi-store flow | Active feature code and current defect | Use callback-level, EF, and endpoint regression tests together |
## `[ASK USER]` Questions
None for this focused investigation.
## Evidence
- `docs/codebase/.codebase-scan.txt`
- `src/modules/Elsa.ExternalAuthentication/Services/ExternalAuthenticationBroker.cs`
- `src/modules/Elsa.ExternalAuthentication.Persistence.EFCore/Stores/EFCoreExternalIdentityProvisioner.cs`
- `test/integration/Elsa.ExternalAuthentication.IntegrationTests/`