Be an admin on an up-to-date Discourse site with one or more two-factor keys enabled, such as security keys and authenticator app.
Be able to log in and out successfully with those two-factor keys.
Ensure that the site setting for enforcing two-factor logins is set to “no”.
Delete all of the two-factor items from your (admin) account using the standard UI tools in the Security tab of the admin’s user profile preferences.
Log out.
Expected behavior
Log in to site with username or password; access granted; or
Log in to site with “email me a link”; access granted.
Actual behavior
Both “expected” scenarios fail with an error message, and login is not allowed:
The selected two-factor method is not enabled for your account.
There is no further way to log in with the admin’s account.
It is worth noting that I am not actually locked out of the site in question; I had another session still active on another computer and was able to go over to that session and re-add a token-based authenticator to get back in. However, had I not had another session I would have been “fully” locked out.
Thanks for reporting this. I’ve had it bookmarked for the past few days, but haven’t got around to testing it yet. I assume that what you’re reporting is correct, but will take a close look at it next week.
I guess this is the bug? We should not allow that if your site setting says that all admins must have 2fa enabled.
I think you are not fully locked out, you can use the console to recover now, but we should not make it easy for you to create a pathological situation.
I’m not quite sure that’s the right logic? I didn’t have enforce second factor on anything but the default value of “no” and it’s not really safe to assume that every installation has more than one admin account. It seems that once the 2FA keys are removed from the profile, some other flag is not being removed somewhere…
I think you are not fully locked out, you can use the console to recover now
I suppose this is a valid emergency workaround although it may be beyond the skills of an admin who does not also manage their server and they might have to track down a sysadmin.
SE all’utente non sarà consentito di accedere di nuovo dopo aver eliminato questo 2fa (ultimo 2fa che hanno e 2fa è richiesto per l’account secondo le impostazioni del livello di fiducia / impostazioni dell’amministratore)
ALLORA non consentirgli di eliminare l’ultimo 2fa e visualizzare un errore.
Penso di essere stato colpito dallo stesso bug (Discourse versione 2.7.10, aggiornato oggi).
Mi sono stati concessi i diritti di amministratore e ho abilitato l’autenticazione a due fattori (2FA). Successivamente, ho creato un secondo utente per me stesso da un’e-mail diversa da utilizzare esclusivamente per l’amministrazione e ho concesso a quest’ultimo i diritti di amministratore.
Quindi ho rimosso i diritti di amministratore dal mio utente originale ed eliminato tutti i metodi 2FA. Ora il mio utente originale riceve il comportamento di errore menzionato dall’OP.
Non ho accesso alla console di questo server. Il sito non impone la 2FA per gli amministratori.
Qualcuno potrebbe spiegare esattamente cosa deve essere fatto dalla console per risolvere questo problema.
A proposito, i motivi per cui l’ho fatto sono che voglio essere soggetto alle normali autorizzazioni e notifiche (o meno) per i gruppi privati sul sito tramite il mio utente normale, magari con la modalità mailing list attiva. Non ho bisogno dell’attrito aggiuntivo della 2FA come utente normale.
Naturalmente l’utente amministratore può vedere tutto, quindi si basa sulla fiducia che non spii inutilmente. Quell’utente può disattivare tutte le notifiche e non abilitare la modalità mailing list.
@sam Dici in modo allettante che questo problema può essere risolto tramite la console, senza dire cosa fare nello specifico. Apprezzerei molto un suggerimento su come risolvere questo particolare problema.
Sospetto di no, poiché l’account ha già la 2FA disabilitata, o per essere più precisi, ha rimosso tutti i metodi 2FA dal proprio account (la 2FA risulta “no” nel profilo), eppure l’accesso sta ancora tentando di utilizzare la 2FA.
Quella guida è per un utente che ha la 2FA abilitata ma ha perso/dimenticato i propri mezzi per generare un token valido.
SOLUZIONE: Come utente amministratore, visita la pagina dei dettagli dell’utente bloccato, scorri fino in fondo e fai clic sul pulsante rosso Impersonifica.
Quindi, nelle preferenze dell’utente, aggiungi un metodo 2FA. (è necessario disporre della password dell’utente per farlo)
Il segreto 2FA deve essere fornito all’utente bloccato.
In questo caso, sono entrambi gli utenti, quindi non è un compito difficile
La rimozione dell’autenticazione a due fattori (2FA) premendo il pulsante “Disabilita tutto” si comporta diversamente dalla rimozione dell’ultimo metodo 2FA? Ovvero, premendo quel pulsante la si rimuove senza bloccarti?
Sono stato in grado di riprodurre questo problema e trovare una soluzione usando la console.
La riproduzione è leggermente diversa da come viene descritta nel primo post. Il passaggio 2 è cruciale, i passaggi 3 e 4 sono meno importanti.
Essere un utente admin su un sito Discourse aggiornato con una o più chiavi a due fattori abilitate, come chiavi di sicurezza e app di autenticazione.
Abilitare i codici di backup
Essere in grado di accedere e disconnettersi con successo con tali chiavi a due fattori.
Assicurarsi che l’impostazione del sito per l’applicazione degli accessi a due fattori sia impostata su “no”.
Eliminare tutti gli elementi a due fattori (autenticatori e chiavi di sicurezza) dal tuo account admin utilizzando gli strumenti standard dell’interfaccia utente nella scheda Sicurezza delle preferenze del profilo utente admin.
Disconnettersi.
Ciò che accade è che se tutti gli elementi a due fattori sono stati rimossi, i codici di backup sono ancora presenti nel database e l’autenticazione a due fattori non viene considerata disabilitata al momento dell’accesso.
Poiché non ci sono più autenticatori o chiavi di sicurezza, l’utente non è in grado di utilizzare i codici di backup.
Una volta rimossi tutti gli autenticatori e le chiavi, i codici di backup non possono nemmeno essere rimossi in Profilo - Sicurezza.
Correzione proposta: Quando l’ultimo elemento di sicurezza viene rimosso dall’utente, anche i codici di backup dovrebbero essere rimossi.
Soluzione alternativa: rimuovere tutti i record UserSecondFactor per questo utente dal database.
È possibile che venga implementata una correzione per questo in una versione più recente di Discourse? Mi è appena successa esattamente la stessa cosa oggi ed è stato un problema recuperare il mio account.
Ho lo stesso problema con un utente che si lamenta di non poter accedere. A questo utente era stata abilitata l’autenticazione a due fattori (2FA) sul suo account in un certo momento, ma in seguito l’ha rimossa. Il messaggio di errore che riceve quando tenta di accedere è:
Il metodo di autenticazione a due fattori selezionato non è abilitato per il tuo account.
Dal menu di amministrazione, vedo che il profilo dell’utente elenca “Autenticazione a due fattori” come “No”.
Poiché è scorretto chiedere all’utente la sua password, ho provato a cambiare la sua e-mail o ad aggiungere un’e-mail secondaria che controllo. Tuttavia, dopo aver cliccato su “Conferma” sull’URL dell’e-mail di conferma, ricevo questo errore:
Il metodo di autenticazione a due fattori selezionato non è valido.
… e l’e-mail non viene modificata/aggiunta.
Non ho accesso alla console o al database per questa installazione di Discord perché è “gestita”.
C’è qualcos’altro che posso provare? O l’utente è bloccato fuori dal suo account per sempre?
Non ho accesso alla console di discourse, perché questa è un’istanza discourse “ospitata”.
Gli amministratori devono essere in grado di rimuovere la 2FA dalla interfaccia di amministrazione, è estremamente poco professionale dover chiedere ai nostri utenti le loro password.
Questo è chiaramente un bug importante che deve essere risolto. Come possiamo segnalarlo formalmente e monitorare i progressi della sua correzione?
Come progetto OpenSource con un’istanza discourse ospitata, non posso accedere alla console o al database, ho solo l’interfaccia di amministrazione.
In realtà non sono d’accordo. Quando la 2FA è disabilitata, i codici di backup della 2FA dovrebbero essere completamente ignorati e non avere alcuna importanza.
Correggendo questo nel posto sbagliato (quando l’ultimo metodo 2FA viene rimosso, rimuovere i codici di backup), abbiamo ancora persone che non possono accedere e si sono semplicemente arrese senza segnalarlo.
Correggendo il bug effettivo (considerando i codici di backup quando la 2FA è disabilitata), risolviamo questo problema per il 100% degli utenti interessati, immediatamente, invece di assicurarci solo che questo non continui ad accadere a nuovi utenti.
Ha funzionato per me, l’utente mi ha dato la password.
Non devi disabilitare direttamente il 2FA, devi prima:
rimuovere tutti i codici di backup 2FA
controllare tre volte che tutti i codici di backup 2FA siano stati rimossi
solo allora disabilitare il 2FA
Usando questo metodo sei effettivamente in grado di disabilitare il 2FA. Questo è vero sia per gli utenti amministratori che impersonano gli utenti per risolvere questo problema, sia per ogni utente normale che vuole semplicemente disabilitare il 2FA.