# #035 Lokale Benutzerkonten **Status:** erledigt **Meilenstein:** v1.0.0 **Labels:** sicherheit, backend, ui **Geschätzt:** 2 h **Tatsächlich:** 0 h 35 min ## Ziel sshkv ohne authentik in Betrieb nehmen können – mit eigenen Konten je Person statt eines geteilten Notfall-Admins, damit Rollen und Audit-Log stimmen. Später laufen lokale Konten und OIDC nebeneinander, oder die lokalen werden abgeschaltet. ## Aufgaben - [x] Anmeldung mit Anmeldename, Passwort und Pflicht-TOTP für lokale Konten (gleicher Ablauf wie der Notfall-Admin) - [x] Einmal-Passwort vom System, Pflichtwechsel bei der ersten Anmeldung (`passwortWechselNoetig`, Seite `/anmelden/passwort`) - [x] Benutzerverwaltung `/einstellungen/benutzer`: anlegen, Rolle ändern, sperren/entsperren, zurücksetzen – Recht `benutzerVerwalten` (Admin + frische Bestätigung) - [x] OIDC-Konten nur sperrbar; Notfall-Admin und eigenes Konto unveränderlich - [x] Schalter `SSHKV_LOKALE_KONTEN` (Standard an), auch in `docker-compose.yml` - [x] Protokoll für alle Schritte, nie mit Passwort - [x] Doku: Handbuch, Installation („Ohne authentik starten“), Sicherheit, Abnahme-Liste ## Akzeptanzkriterien - [x] DB-Tests: erste Anmeldung (Einmal-Passwort → eigenes → TOTP → angemeldet), schwache/unveränderte Passwörter, doppelte Namen, Rollen- und Sperrregeln, Zurücksetzen, abgeschaltet - [x] E2E: Admin legt an, Person meldet sich zum ersten Mal an, Operator kommt nicht in die Benutzerverwaltung, Sperren beendet die Sitzung sofort ## Abhängigkeiten #004 ## Notizen / Entscheidungen - **TOTP ist Pflicht** auch für lokale Konten (Entscheidung Florian, 12.10.2026). - **Dauerhaft, aber abschaltbar** per `SSHKV_LOKALE_KONTEN=0` (Entscheidung Florian, 12.10.2026). - **Admins wählen keine Passwörter für andere:** sshkv erzeugt ein Einmal-Passwort (4 × 5 Zeichen ohne verwechselbare Zeichen, gut 115 Bit), das genau einmal angezeigt wird. - **12 Zeichen Mindestlänge** für eigene Passwörter – mit Pflicht-TOTP ausreichend; der Notfall-Admin behält 16. - **Sperren beendet Sitzungen sofort** (`sitzungenGueltigAb`); eine Rollenänderung verwirft die gespeicherte Bestätigung. - Lokale Konten bekommen keine E-Mail-Adresse, damit die OIDC-Verknüpfung per E-Mail nie ein lokales Konto übernehmen kann.