Impossibile confermare la nuova email quando i codici di backup per l'autenticazione a due fattori sono abilitati

Quando i codici di backup per l'autenticazione a due fattori sono abilitati, la conferma di un nuovo indirizzo email fallisce con questo errore:

Ops

Il software che alimenta questo forum di discussione ha riscontrato un problema imprevisto. Ci scusiamo per l'inconveniente.

Sono state registrate informazioni dettagliate sull'errore e generata una notifica automatica. Lo esamineremo.

Non è necessaria alcuna ulteriore azione. Tuttavia, se la condizione di errore persiste, puoi fornire ulteriori dettagli, inclusi i passaggi per riprodurre l'errore, pubblicando un argomento di discussione nella categoria feedback del sito.

Ciò si verifica in più configurazioni di Discourse, quindi non è specifico di una sola.

Disattivare la funzionalità codici di backup per l'autenticazione a due fattori risolve il problema e la verifica dell’email procede correttamente.

Passaggi completi per riprodurre il problema:

  • Inizia con un account su qualsiasi istanza di Discourse (puoi utilizzare https://try.discourse.org/ per i test)
  • Configura l’autenticazione a due fattori (2FA) con TOTP (non ho testato con chiavi di sicurezza fisiche)
  • Modifica l’email del tuo account
  • Clicca sull’email di verifica inviata alla nuova casella di posta. Noterai che la verifica ha successo.
  • Abilita i codici di backup per l'autenticazione a due fattori nelle impostazioni 2FA.
  • Modifica nuovamente l’email dell’account.
  • Clicca sull’email di verifica inviata alla casella di posta più recente. Noterai che la verifica fallisce con l’errore indicato in precedenza.
  • Disattiva i codici di backup per l'autenticazione a due fattori.
  • Modifica nuovamente l’email.
  • Clicca sull’email di verifica inviata al nuovo indirizzo.
  • Ti verrà chiesto di inserire il codice TOTP.
  • Questa volta la verifica del nuovo indirizzo email ha successo.
4 Mi Piace

Hai controllato /logs nel tuo browser web quando hai effettuato l’accesso come amministratore per vedere qual è l’errore effettivo? Penso che se si fosse trattato di un vero bug, lo avremmo visto sui nostri siti.

Inoltre, si tratta di chiavi di sicurezza o di token TOTP? In ogni caso, avremo bisogno di passaggi specifici per la riproduzione del problema (in un ambiente di sviluppo o su try.discourse.org) per poterlo confermare.

3 Mi Piace

Solo per aggiungere, non sembra che ci siano stati errori rilevanti registrati nei forum di Caddy.

2 Mi Piace

Grazie per aver collegato i thread!

Buon punto. Si è scoperto che questo è un problema solo quando i codici di backup per l'autenticazione a due fattori sono abilitati. Ho aggiornato il post con i nuovi dettagli e le istruzioni per riprodurre il problema.

1 Mi Piace

Come la prendiamo con questi passaggi per la riproduzione @tshenry? La sequenza mi sembra un po’ strana.

1 Mi Piace

Non intendevo dire che l’email deve essere aggiornata più volte. Serve a indicare che la verifica dell’email fallisce solo quando i codici di backup sono abilitati, e non in altri casi.

C’è sicuramente un bug qui. Per affinare un po’ i passaggi per la riproduzione:

  1. Configura l’autenticazione a due fattori (2FA) con TOTP
  2. Abilita i codici di backup
  3. Modifica l’indirizzo email
  4. Clicca sul link di verifica nell’email di conferma
  5. Vieni reindirizzato alla pagina “Oops”

Posso confermare che disabilitare i codici di backup risolve immediatamente il problema, anche utilizzando lo stesso link di verifica dell’email.

Il registro degli errori mostra:

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'

Che, a mio avviso, è correlato a questa riga qui: https://github.com/discourse/discourse/blob/master/app/views/users_email/confirm.html.erb#L36

Questa fa riferimento a un file che effettivamente manca: discourse/app/views/common at main · discourse/discourse · GitHub

8 Mi Piace

Grazie @arun — dovremmo risolvere questo problema @eviltrout

4 Mi Piace

Questo è stato risolto con questo commit:

7 Mi Piace