Absicherung der Steuerendpunkte gegen die echte Datenbank verifiziert

Der in Phase 4 offen gebliebene Ende-zu-Ende-Nachweis ist nachgeholt. Geprueft
mit einem Wegwerf-Host, der ausschliesslich den Webserver startet - die Worker
blieben aus, weil parallel eine aeltere Instanz auf derselben Datenbank laeuft.
Zusaetzlich mit ApiSettings__ReadOnlyDatabase=true, sodass weder Migrationen
noch Seeding liefen.

Als externe Bindung diente 127.0.0.2: gilt der Pruefung als oeffentlich,
bleibt aber Loopback, oeffnet also nichts im Netz.

Ergebnis:
- localhost ohne Token: Steuerendpunkte 200, Swagger 200
- extern ohne Token:    Steuerendpunkte 404, Swagger 404, capabilities meldet
                        canControl false
- extern mit Token:     ohne Header 401, falscher Token 401, richtiger 200,
                        Swagger 404

Nebenbei verifiziert: Datenbankverbindung steht (37.803 MB), Web-UI und
Assets werden ausgeliefert, /api/dashboard liefert echte Daten
(151.094 Trader, 38.187.946 Trades).

Nur Dokumentation - keine Codeaenderung.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-08-08 21:26:38 +02:00
co-authored by Claude Opus 5
parent b175df6d3e
commit 6e8ccba258
+24 -4
View File
@@ -604,11 +604,31 @@ toleranter. Als Kommentar an der Bind-Stelle hinterlegt. Praktischer Test steht
* `ApiTokenFilterTests` — richtiger Token passiert, fehlender/falscher/zu kurzer/zu langer
sowie abweichend geschriebener Token werden abgewiesen.
### ⚠️ Nicht Ende-zu-Ende verifiziert
### Ende-zu-Ende verifiziert (2026-08-08, gegen die echte Datenbank)
Die Entscheidungslogik und der Filter sind einzeln getestet, die Verdrahtung dazwischen
nicht: `StartWebServerAsync` bricht ohne Datenbankkonfiguration vorher ab. Nachzuholen,
sobald die DB-Zugangsdaten wieder hinterlegt sind.
Nachgeholt, sobald die DB-Zugangsdaten wieder vorlagen. Geprüft wurde mit einem
Wegwerf-Host, der **ausschließlich den Webserver** startet — die Worker blieben aus, weil
parallel eine ältere Instanz auf derselben Datenbank läuft. Zusätzlich mit
`ApiSettings__ReadOnlyDatabase=true`, sodass weder Migrationen noch Seeding liefen
(im Log bestätigt).
Als „externe" Bindung diente `127.0.0.2`: die Adresse gilt der Prüfung als öffentlich,
bleibt aber Loopback — der Test öffnet also nichts im Netz.
| Fall | `/api/capabilities` | `/api/jobs` | Swagger |
|---|---|---|---|
| localhost, kein Token | `canControl:true, authRequired:false` | 200 | 200 |
| **extern, kein Token** | `canControl:false` | **404** | **404** |
| extern, mit Token | `canControl:true, authRequired:true, tokenHeader:"X-Predictalytics-Key"` | ohne Header **401**, falscher Token **401**, richtiger **200** | **404** |
Damit ist belegt: eine externe Bindung ohne Token stellt die Steuerendpunkte gar nicht
erst bereit, und Swagger ist in beiden externen Fällen abgeschaltet.
**Gleichzeitig verifiziert** (Vorgriff auf Phase 6):
* Datenbankverbindung steht — 37.803 MB, `SELECT`-Pfad über `GetDatabaseSizeMbAsync`
* Web-UI und Assets werden ausgeliefert: `/`, `/css/style.css`, `/js/app.js` je 200
* `/api/dashboard` liefert echte Daten: 151.094 Trader, 38.187.946 Trades
---