Weitere vom Sicherheitsaudit gemeldete Luecken behoben, die bisher als niedrige Prioritaet offen gelassen wurden: - SSO-Login (Entra ID) prüft jetzt lokale MFA genauso wie der Passwort-Login: ist mfaEnabled gesetzt, liefert /auth/sso/complete denselben mfaRequired-Codepfad wie /auth/login, bevor Tokens ausgestellt werden. Frontend (Login-Seite, AuthContext) zeigt in dem Fall den bestehenden Code-Eingabe-Schritt statt die Anmeldung stillschweigend abzuschliessen. - Avatar- und Dokument-Uploads pruefen jetzt die tatsaechlichen Datei-Bytes (Magic Numbers fuer PNG/JPEG/WEBP/PDF) statt nur dem client-angegebenen MIME-Typ/data:-URL-Praefix zu vertrauen. - Swagger-UI (/api/v1/docs) ist jetzt standardmaessig deaktiviert (ENABLE_SWAGGER=true erforderlich), da sie zuvor das komplette API-Schema ungeschuetzt oeffentlich preisgab. npm-audit-Warnungen (deepmerge-ts/mysql2 unter prisma) bewusst nicht gefixt: kein stabiles Prisma-Release loest sie bislang auf, nur eine Release-Candidate-Hauptversion - das Risiko eines Downgrades/RC-Upgrades der Datenbankschicht uebersteigt den Nutzen fuer eine Kette, die zur Laufzeit ohnehin nicht erreichbar ist (nur Prisma-CLI, nur MySQL-Treiber, dieses Projekt nutzt Postgres). Co-Authored-By: Claude Sonnet 5 <[email protected]>
36 lines
1.5 KiB
Bash
36 lines
1.5 KiB
Bash
# Kopieren nach .env und mit echten Werten befuellen. .env ist gitignored.
|
|
|
|
DATABASE_URL="postgresql://user:password@localhost:5432/apicore?schema=public"
|
|
|
|
JWT_ACCESS_SECRET="change-me-access-secret"
|
|
JWT_REFRESH_SECRET="change-me-refresh-secret"
|
|
JWT_ACCESS_EXPIRES_IN="15m"
|
|
JWT_REFRESH_EXPIRES_IN="7d"
|
|
|
|
PORT=3001
|
|
FRONTEND_ORIGIN="http://localhost:3000"
|
|
|
|
# Refresh-token cookie requires HTTPS by default. Set to "false" only for
|
|
# local HTTP development - every real deployment must leave this unset (or
|
|
# "true").
|
|
COOKIE_SECURE=false
|
|
|
|
# Lokales Verzeichnis fuer hochgeladene Dokumente/Bilder (Modul 29).
|
|
# Bei horizontaler Skalierung (>1 Replica) muss dies auf ein geteiltes
|
|
# Volume (z.B. ReadWriteMany-PVC) zeigen, siehe ARCHITECTURE.md Annahme 7.
|
|
DOCUMENTS_STORAGE_PATH="./uploads"
|
|
|
|
# Entra ID SSO. Ohne alle vier Werte bleibt SSO deaktiviert
|
|
# (GET /api/v1/auth/sso/status meldet enabled: false, kein Fehler beim Start).
|
|
# OIDC_ISSUER_URL ist die v2.0-Metadaten-URL des Tenants, OIDC_REDIRECT_URI
|
|
# muss exakt der in der App-Registrierung hinterlegten Redirect-URI entsprechen.
|
|
OIDC_ISSUER_URL="https://login.microsoftonline.com/<tenant-id>/v2.0"
|
|
OIDC_CLIENT_ID="change-me-entra-client-id"
|
|
OIDC_CLIENT_SECRET="change-me-entra-client-secret"
|
|
OIDC_REDIRECT_URI="http://localhost:3001/api/v1/auth/sso/callback"
|
|
|
|
# Swagger-UI unter /api/v1/docs ist per Default deaktiviert, da sie das
|
|
# gesamte API-Schema ungeschuetzt (kein JwtAuthGuard) preisgeben wuerde.
|
|
# Nur fuer lokale Entwicklung/Debugging explizit aktivieren.
|
|
ENABLE_SWAGGER=false
|