Impossible de confirmer le nouvel e-mail lorsque les codes de sauvegarde à double authentification sont activés

Lorsque les codes de sauvegarde à deux facteurs sont activés, la confirmation d’une nouvelle adresse e-mail échoue avec l’erreur suivante :

Oups

Le logiciel alimentant ce forum de discussion a rencontré un problème inattendu. Nous nous excusons pour la gêne occasionnée.

Des informations détaillées sur l'erreur ont été consignées et une notification automatique a été générée. Nous allons l'examiner.

Aucune action supplémentaire n'est nécessaire. Cependant, si le problème persiste, vous pouvez fournir des détails supplémentaires, notamment les étapes permettant de reproduire l'erreur, en publiant un sujet de discussion dans la catégorie de retour d'expérience du site.

Ce problème se produit sur plusieurs installations Discourse, il n’est donc pas spécifique à une seule.

Désactiver la fonctionnalité codes de sauvegarde à deux facteurs résout le problème, et la vérification de l’e-mail se déroule correctement.

Voici les étapes complètes pour reproduire le problème :

  • Commencez avec un compte sur n’importe quelle instance Discourse (vous pouvez utiliser https://try.discourse.org/ pour les tests)
  • Configurez l’authentification à deux facteurs (2FA) avec TOTP (je n’ai pas testé avec des clés de sécurité physiques)
  • Modifiez l’e-mail de votre compte
  • Cliquez sur l’e-mail de vérification envoyé à la nouvelle boîte de réception. Remarquez que la vérification réussit.
  • Activez les codes de sauvegarde à deux facteurs dans vos paramètres 2FA.
  • Modifiez à nouveau l’e-mail du compte.
  • Cliquez sur l’e-mail de vérification envoyé à la nouvelle boîte de réception. Remarquez que la vérification échoue avec l’erreur mentionnée précédemment.
  • Désactivez les codes de sauvegarde à deux facteurs.
  • Modifiez à nouveau l’e-mail.
  • Cliquez sur l’e-mail de vérification envoyé à la nouvelle adresse.
  • On vous demandera de saisir le code TOTP.
  • Cette fois, la vérification de la nouvelle adresse e-mail se déroule correctement.
4 « J'aime »

Avez-vous vérifié /logs dans votre navigateur web lorsque vous êtes connecté en tant qu’administrateur pour voir quelle est l’erreur réelle ? Je pense que nous aurions vu cela sur nos sites s’il s’agissait d’un véritable bug.

Par ailleurs, s’agit-il de clés de sécurité ou de jetons TOTP ? Quoi qu’il en soit, nous aurons besoin d’étapes de reproduction précises ici (soit dans un environnement de développement, soit sur try.discourse.org) afin de pouvoir confirmer.

3 « J'aime »

Juste pour intervenir, il ne semble pas y avoir d’erreurs pertinentes enregistrées sur les forums de Caddy.

2 « J'aime »

Merci d’avoir lié les fils de discussion entre eux !

Bonne remarque. Il s’avère que ce problème ne se produit que lorsque les codes de secours à double authentification sont activés. J’ai mis à jour le message avec les nouvelles informations et les étapes pour reproduire le problème.

1 « J'aime »

Que pensez-vous de ces étapes de reproduction @tshenry ? La séquence me semble un peu étrange.

1 « J'aime »

Je ne voulais pas dire que l’e-mail doit être mis à jour plusieurs fois. Il s’agit d’indiquer que la vérification de l’e-mail échoue uniquement lorsque les codes de sauvegarde sont activés, et non dans les autres cas.

Il y a certainement un bug ici. Pour affiner un peu les étapes de reproduction :

  1. Configurer la 2FA avec TOTP
  2. Activer les codes de secours
  3. Changer l’adresse e-mail
  4. Cliquer sur le lien de vérification dans l’e-mail de confirmation
  5. Se retrouver sur la page « Oops »

Je confirme que la désactivation des codes de secours résout immédiatement le problème, même en utilisant le même lien de vérification par e-mail.

Le journal d’erreurs indique :

ActionView::Template::Error (Missing partial common/_second_factor_form_script with {:locale=>[:en_US, :en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby]}. Searched in:
  * "/var/www/discourse/app/views"
)
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.1/lib/action_view/path_set.rb:48:in `find'

Ce qui, selon moi, est lié à cette ligne ici : https://github.com/discourse/discourse/blob/master/app/views/users_email/confirm.html.erb#L36

Cette ligne fait référence à un fichier qui est effectivement manquant : discourse/app/views/common at main · discourse/discourse · GitHub

8 « J'aime »

Merci @arun — nous devrions corriger cela @eviltrout

4 « J'aime »

Cela a été corrigé via ce commit :

7 « J'aime »