Das Ziel verlangt einen zweiten Faktor
Zwei Wege durch eine Zwei-Faktor-Abfrage, je nachdem, woher der Code kommt, warum ein Code im Szenario abgelehnt wird, und der Fall, den keiner abdeckt: die Einrichtung.
Die Lage. Die Anmeldung klappt, dann verlangt das Ziel einen sechsstelligen Code. Woher dieser Code kommt, entscheidet über den Weg.
Der Code wird aus einem Schlüssel erzeugt, den Sie besitzen
Standard-TOTP, wie es eine Authenticator-App erzeugt. Liegt der
Base32-Schlüssel in der Datei mit den Zugangsdaten unter totp_cle, berechnet
Dinoer den aktuellen Code selbst:
{"type": "remplir", "selecteur": "input[name=\"otp\"]",
"valeur": "depuis_secrets_totp"}
Niemand muss etwas eintippen oder auf die Uhr achten. Der Schlüssel bleibt im verschlüsselten Verzeichnis, und den Code berechnet Dinoer, nicht die Seite.
Nehmen Sie diesen Weg, wann immer er möglich ist.
Der Code wird Ihnen geschickt
Per SMS, per E-Mail, in einer App: Dinoer kann ihn nicht erzeugen.
attendre_mfa_ntfy veröffentlicht einen Warte-Hinweis auf Ihrem ntfy-topic
(der Schlüssel ntfy_topic in der Datei mit den Zugangsdaten), wartet, bis Sie
den Code dorthin senden, und tippt ihn dann ins Feld. Abgeschickt wird nicht:
Fügen Sie den folgenden Klick hinzu.
[
{"type": "cliquer", "selecteur": "#send-code"},
{"type": "attendre_mfa_ntfy", "selecteur": "input[name=\"otp\"]", "timeout": 120},
{"type": "cliquer", "selecteur": "#confirm"}
]
timeout ist die Wartezeit in Sekunden, standardmäßig 120. Nur eine Nachricht
aus 4 bis 8 Ziffern gilt als Code; alles andere auf dem topic wird
ignoriert.
Ein Code im Szenario wird abgelehnt
{"type": "remplir", "selecteur": "input[name=\"otp\"]", "valeur": "123456"}
Dinoer lehnt dieses Szenario ab, bevor der Browser startet: Ein Selektor, der
otp, totp, mfa oder 2fa enthält, gilt als sensibles Feld, und sein
Wert muss aus depuis_secrets oder depuis_secrets_totp stammen. Muss ein
Mensch den Code ablesen, ist der vorige Weg der richtige: Dieser Mensch sendet
ihn an das topic.
Der Fall, den keiner abdeckt
Die Einrichtung: der allererste Code, in dem Moment, in dem der Schlüssel entsteht.
Wenn Sie die Zwei-Faktor-Authentifizierung einschalten, erzeugt der Server den
Schlüssel und zeigt ihn ein einziges Mal. In diesem Moment gibt es ihn
sonst nirgends: nicht in Ihrer Datei mit den Zugangsdaten, nicht auf einem
topic. depuis_secrets_totp hat nichts zu lesen.
Für diesen Schritt hat Dinoer keine Aktion. Richten Sie es von Hand ein,
legen Sie den Schlüssel unter totp_cle in der Datei mit den Zugangsdaten ab
und lassen Sie Dinoer ihn danach verwenden.
Wenn Sie einen Code in der Seite berechnen
Die Browser-API crypto.subtle existiert nur in einem sicheren Kontext,
HTTPS oder localhost. Auf einem Ziel mit einfachem HTTP ist sie undefiniert,
und ein Skript, das sie braucht, scheitert mit
Cannot read properties of undefined. depuis_secrets_totp hängt nicht davon
ab, da Dinoer den Code außerhalb der Seite berechnet.
Kurz gesagt
- Schlüssel in der Datei mit den Zugangsdaten:
depuis_secrets_totp. Vorzuziehen. - Code wird Ihnen geschickt:
attendre_mfa_ntfy, dann ein Klick zum Absenden. - Ein Code im Szenario wird auf einem Feld, das nach Code aussieht, abgelehnt.
- Die Einrichtung geschieht einmal von Hand; legen Sie den Schlüssel danach ab.