Auth: Passwort-Reset und Token-Invalidierung implementieren #81

Open
opened 2026-03-30 20:20:34 +00:00 by David · 0 comments
Collaborator

Beschreibung

Es gibt keinen Passwort-Reset-Mechanismus und keine Möglichkeit JWT-Tokens zu invalidieren. Ein vergessenes Passwort erfordert Datenbankeingriff, und ein kompromittierter Token bleibt ewig gültig.

Hintergrund

backend/api/auth.py hat Login und User-CRUD, aber kein Password-Reset. JWTs haben zwar ein exp-Claim, aber keine Blacklist für vorzeitige Invalidierung (z.B. nach Logout oder Sicherheitsvorfall).

Akzeptanzkriterien

  • POST /api/auth/reset-password — Admin kann Passwort für User zurücksetzen
  • POST /api/auth/change-password — User kann eigenes Passwort ändern (altes PW nötig)
  • POST /api/auth/logout — Token wird invalidiert
  • Token-Blacklist (in DB oder Redis) für invalidierte Tokens
  • Test: Nach Logout ist alter Token ungültig (401)

Technische Hinweise

  • Betroffene Dateien: backend/api/auth.py, backend/services/auth_service.py
  • Ansatz: Token-Blacklist-Tabelle oder kurze Token-Lebensdauer (1h) + Refresh-Token
  • Migration nötig: ja (Token-Blacklist-Tabelle)

Aufwand: S

## Beschreibung Es gibt keinen Passwort-Reset-Mechanismus und keine Möglichkeit JWT-Tokens zu invalidieren. Ein vergessenes Passwort erfordert Datenbankeingriff, und ein kompromittierter Token bleibt ewig gültig. ## Hintergrund `backend/api/auth.py` hat Login und User-CRUD, aber kein Password-Reset. JWTs haben zwar ein `exp`-Claim, aber keine Blacklist für vorzeitige Invalidierung (z.B. nach Logout oder Sicherheitsvorfall). ## Akzeptanzkriterien - [ ] `POST /api/auth/reset-password` — Admin kann Passwort für User zurücksetzen - [ ] `POST /api/auth/change-password` — User kann eigenes Passwort ändern (altes PW nötig) - [ ] `POST /api/auth/logout` — Token wird invalidiert - [ ] Token-Blacklist (in DB oder Redis) für invalidierte Tokens - [ ] Test: Nach Logout ist alter Token ungültig (401) ## Technische Hinweise - Betroffene Dateien: `backend/api/auth.py`, `backend/services/auth_service.py` - Ansatz: Token-Blacklist-Tabelle oder kurze Token-Lebensdauer (1h) + Refresh-Token - Migration nötig: ja (Token-Blacklist-Tabelle) ## Aufwand: S
Sign in to join this conversation.
No description provided.