feat: TOTP-Geheimnis auslesen, um ein zweites Geraet einzurichten
Die Anwendung zeigt das Geheimnis genau einmal an, beim Einrichten - das ist richtig so. Wer den Zugang aber auf ein zweites Geraet legen will, Handy und Tablet oder ein Ersatzgeraet im Schrank, braucht es noch einmal. Bisher blieb dafuer nur, den zweiten Faktor zurueckzusetzen und alle Wiederherstellungscodes neu zu erzeugen. Das Skript laeuft nur auf dem Server und nur mit Zugriff auf die Datenbank UND auf ENC_KEY_V1. Wer beides hat, kann ohnehin alles lesen - genau deshalb liegt der Schluessel nicht in der Datenbank. Es ist also keine Hintertuer, sondern erspart eine unnoetige Neueinrichtung. Es gibt den otpauth-URI mit aus, aber mit dem ausdruecklichen Hinweis, ihn in einen QR-Erzeuger auf demselben Rechner zu geben und nicht in einen Dienst im Netz - sonst haette man das Geheimnis gerade dorthin gegeben, wovor der zweite Faktor schuetzen soll. Geprueft gegen den Entwicklungszugang: der ausgelesene Wert stimmt mit SEED_DEV_TOTP_SECRET ueberein. Etappe: 8 Phase: Haertung
This commit is contained in:
@@ -347,6 +347,19 @@ abends musst du nichts nacharbeiten.
|
||||
|
||||
## Wenn etwas schiefgeht
|
||||
|
||||
**Ich will den Zugang auf ein zweites Gerät legen.**
|
||||
Das Geheimnis wird nur einmal angezeigt, beim Einrichten. Wer es später
|
||||
noch einmal braucht — Handy und Tablet, oder ein Ersatzgerät im Schrank —
|
||||
liest es auf dem Server aus:
|
||||
|
||||
```bash
|
||||
docker compose exec app node scripts/totp-geheimnis.mjs deine@adresse.de
|
||||
```
|
||||
|
||||
Das ist keine Hintertür: Es läuft nur mit Zugriff auf die Datenbank **und**
|
||||
auf `ENC_KEY_V1`. Wer beides hat, kommt ohnehin an alles. Die Ausgabe
|
||||
gehört trotzdem in kein Protokoll und in keine E-Mail.
|
||||
|
||||
**Ich habe mein Handy mit der Authenticator-App verloren.**
|
||||
Melde dich mit einem deiner Wiederherstellungscodes an — statt der sechs
|
||||
Ziffern gibst du den Code im Format `XXXX-XXXX-XXXX` ein. Jeder
|
||||
|
||||
Reference in New Issue
Block a user