Dinoer

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.