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:
@@ -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
|
* `ApiTokenFilterTests` — richtiger Token passiert, fehlender/falscher/zu kurzer/zu langer
|
||||||
sowie abweichend geschriebener Token werden abgewiesen.
|
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
|
Nachgeholt, sobald die DB-Zugangsdaten wieder vorlagen. Geprüft wurde mit einem
|
||||||
nicht: `StartWebServerAsync` bricht ohne Datenbankkonfiguration vorher ab. Nachzuholen,
|
Wegwerf-Host, der **ausschließlich den Webserver** startet — die Worker blieben aus, weil
|
||||||
sobald die DB-Zugangsdaten wieder hinterlegt sind.
|
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
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user