La cible demande un second facteur
Deux façons de passer une demande de double authentification selon l'origine du code, pourquoi un code écrit dans le scénario est refusé, et le cas qu'aucune ne couvre : l'activation.
La situation. La connexion passe, puis la cible demande un code à six chiffres. C’est l’origine de ce code qui décide de la marche à suivre.
Le code est calculé à partir d’une graine que vous détenez
Le TOTP standard, celui que produit une application d’authentification. Si la
graine en base32 est rangée dans le fichier d’identifiants sous totp_cle,
Dinoer calcule lui-même le code en cours :
{"type": "remplir", "selecteur": "input[name=\"otp\"]",
"valeur": "depuis_secrets_totp"}
Personne n’a rien à saisir ni à surveiller l’heure. La graine reste dans le répertoire chiffré, et le code est calculé par Dinoer, pas par la page.
Prenez cette voie chaque fois qu’elle est possible.
Le code vous est envoyé
Par SMS, par courriel, dans une application : Dinoer ne peut pas le produire.
attendre_mfa_ntfy publie un avis d’attente sur votre topic ntfy (la clé
ntfy_topic du fichier d’identifiants), attend que vous y envoyiez le code,
puis le tape dans le champ. Il n’envoie pas le formulaire : ajoutez le clic
qui suit.
[
{"type": "cliquer", "selecteur": "#send-code"},
{"type": "attendre_mfa_ntfy", "selecteur": "input[name=\"otp\"]", "timeout": 120},
{"type": "cliquer", "selecteur": "#confirm"}
]
timeout est l’attente en secondes, 120 par défaut. Seul un message de 4 à 8
chiffres est pris pour un code ; tout autre message sur le topic est
ignoré.
Un code écrit dans le scénario est refusé
{"type": "remplir", "selecteur": "input[name=\"otp\"]", "valeur": "123456"}
Dinoer refuse ce scénario avant le démarrage du navigateur : un sélecteur qui
contient otp, totp, mfa ou 2fa est traité comme un champ sensible, et
sa valeur doit venir de depuis_secrets ou de depuis_secrets_totp. Si une
personne doit lire le code, c’est la voie précédente qu’il faut prendre : cette
personne l’envoie sur le topic.
Le cas qu’aucune ne couvre
L’activation : le tout premier code, au moment où la graine est créée.
Quand vous activez la double authentification, le serveur génère la graine et
l’affiche une seule fois. À cet instant, elle n’existe nulle part
ailleurs : ni dans votre fichier d’identifiants, ni sur un topic.
depuis_secrets_totp n’a rien à lire.
Dinoer n’a pas d’action pour cette étape. Faites l’activation à la main,
rangez la graine sous totp_cle dans le fichier d’identifiants, et laissez
Dinoer s’en servir ensuite.
Si vous calculez un code dans la page
L’API crypto.subtle du navigateur n’existe que dans un contexte sécurisé,
HTTPS ou localhost. Sur une cible en HTTP simple, elle n’est pas définie, et
un script qui en dépend échoue avec Cannot read properties of undefined.
depuis_secrets_totp n’en dépend pas, puisque Dinoer calcule le code hors de
la page.
En bref
- Graine dans le fichier d’identifiants :
depuis_secrets_totp. À préférer. - Code qui vous est envoyé :
attendre_mfa_ntfy, puis un clic pour envoyer. - Un code écrit dans le scénario est refusé sur un champ qui a l’air d’en attendre un.
- L’activation se fait à la main, une fois ; rangez la graine ensuite.