No se puede confirmar el nuevo correo electrónico cuando los códigos de respaldo de autenticación en dos pasos están habilitados

Cuando se habilitan los códigos de respaldo de autenticación en dos pasos, la confirmación de una nueva dirección de correo falla con el siguiente error:

Vaya

El software que impulsa este foro de discusión encontró un problema inesperado. Pedimos disculpas por las molestias.

Se registró información detallada sobre el error y se generó una notificación automática. Lo revisaremos.

No es necesaria ninguna acción adicional. Sin embargo, si el error persiste, puedes proporcionar más detalles, incluidos los pasos para reproducir el error, publicando un tema de discusión en la categoría de retroalimentación del sitio.

Esto ocurre en múltiples configuraciones de Discourse, por lo que no es específico de una sola.

Desactivar la función de códigos de respaldo de autenticación en dos pasos resuelve el problema, y la verificación de correo se realiza correctamente.

Pasos completos para reproducir el problema:

  • Comienza con una cuenta en cualquier instalación de Discourse (puedes usar https://try.discourse.org/ para pruebas)
  • Configura la autenticación en dos pasos (2FA) con TOTP (no he probado con claves de seguridad físicas)
  • Cambia el correo de tu cuenta
  • Haz clic en el correo de verificación enviado a la nueva bandeja de entrada. Observa que la verificación se realiza correctamente.
  • Habilita los códigos de respaldo de autenticación en dos pasos en la configuración de 2FA.
  • Cambia el correo de la cuenta nuevamente.
  • Haz clic en el correo de verificación enviado a la bandeja de entrada más reciente. Observa que la verificación falla con el error mencionado anteriormente.
  • Desactiva los códigos de respaldo de autenticación en dos pasos.
  • Cambia el correo nuevamente.
  • Haz clic en el correo de verificación enviado a la dirección más reciente.
  • Se te pedirá que ingreses el código TOTP.
  • Esta vez, la verificación del correo más reciente se realiza correctamente.
4 Me gusta

¿Revisaste /logs en tu navegador web cuando iniciaste sesión como administrador para ver cuál es el error real? Creo que lo habríamos visto en nuestros sitios si fuera un error real.

Además, ¿esto es con claves de seguridad o con tokens TOTP? Independientemente, necesitaremos pasos específicos de reproducción aquí (ya sea en un entorno de desarrollo o en try.discourse.org) para poder confirmarlo.

3 Me gusta

Solo para aportar, no parece que haya errores registrados relevantes en los foros de Caddy.

2 Me gusta

¡Gracias por interconectar los hilos!

Buen punto. Resulta que este es un problema solo cuando están habilitados los códigos de respaldo de autenticación en dos pasos. He actualizado la publicación con los nuevos detalles y los pasos para reproducirlo.

1 me gusta

¿Qué opinas de estos pasos para reproducir el problema, @tshenry? La secuencia me parece un poco extraña.

1 me gusta

No quise decir que el correo electrónico necesite actualizarse varias veces. Es para indicar que la verificación del correo electrónico falla solo cuando los códigos de respaldo están habilitados, y no en otro caso.

Definitivamente hay un error aquí. Para afinar un poco los pasos para reproducirlo:

  1. Configurar la autenticación de dos factores (2FA) con TOTP
  2. Habilitar los códigos de respaldo
  3. Cambiar la dirección de correo electrónico
  4. Seleccionar el enlace de verificación en el correo electrónico de confirmación
  5. Recibir la página de “Oops”

Puedo confirmar que deshabilitar los códigos de respaldo soluciona inmediatamente el problema, incluso al usar el mismo enlace de verificación por correo electrónico.

El registro de errores muestra:

ActionView::Template::Error (Falta el parcial common/_second_factor_form_script con {:locale=>[:en_US, :en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby]}. Buscado en:
  * "/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'

Lo cual, creo, está relacionado con esta línea aquí: https://github.com/discourse/discourse/blob/master/app/views/users_email/confirm.html.erb#L36

Esa línea hace referencia a un archivo que efectivamente falta: discourse/app/views/common at main · discourse/discourse · GitHub

8 Me gusta

Gracias @arun, deberíamos solucionarlo @eviltrout

4 Me gusta

Esto se ha solucionado en este commit:

7 Me gusta