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.
SI el usuario no podrá iniciar sesión nuevamente después de eliminar esta 2FA (la última 2FA que tiene y la 2FA es requerida para la cuenta según la configuración de nivel de confianza / configuración del administrador)
ENTONCES no permitas que eliminen la última 2FA y muestra un error.
Creo que me ha afectado el mismo error (Discourse versión 2.7.10, actualizado hoy).
Se me concedieron derechos de administrador y habilité la 2FA. Más tarde, creé un segundo usuario para mí desde un correo electrónico diferente para que se utilizara exclusivamente para administración y le concedí derechos de administrador.
Luego, eliminé los derechos de administrador de mi usuario original y eliminé todos los métodos de 2FA. Ahora mi usuario original recibe el comportamiento de error mencionado por el OP.
No tengo acceso a la consola de este servidor. El sitio no está aplicando la 2FA para los administradores.
¿Alguien podría detallar qué se necesita hacer exactamente en la consola para solucionar este problema?
Por cierto, las razones por las que he hecho esto es que quiero estar sujeto a los permisos y notificaciones normales (o no) para grupos privados en el sitio a través de mi usuario normal, quizás con el modo de lista de correo activado. No necesito la fricción adicional de la 2FA como usuario normal.
Por supuesto, el usuario administrador puede verlo todo, por lo que se basa en la confianza de que no espiarán innecesariamente. Ese usuario puede dejar todas las notificaciones desactivadas y no habilitar el modo de lista de correo.
@sam Dices tentadoramente que este problema se puede resolver a través de la consola, sin decir qué se debe hacer específicamente. Realmente agradecería una indicación sobre cómo solucionar este problema en particular.
Sospecho que no, ya que la cuenta ya tiene la autenticación de dos factores (2FA) desactivada, o para ser más precisos, ha eliminado todos los métodos de 2FA de su cuenta (la 2FA aparece como “no” en el perfil), pero de alguna manera el inicio de sesión todavía está intentando usar la 2FA.
Esa guía es para un usuario que tiene la 2FA habilitada pero ha perdido/olvidado sus medios para generar un token válido.
SOLUCIÓN: Como usuario administrador, visita la página de detalles del usuario bloqueado, desplázate hasta el final y haz clic en el botón rojo Suplantar.
Luego, en las preferencias del usuario, agrega un método de 2FA. (necesitas tener la contraseña del usuario para hacer esto)
El secreto de 2FA debe entregarse al usuario bloqueado.
En este caso, soy ambos usuarios, ¡así que no es una tarea difícil
¿Eliminar 2FA presionando el botón “Desactivar todo” se comporta de manera diferente a eliminar el último método de 2FA? Es decir, ¿eliminarlo sin bloquearte?
He podido reproducir esto y encontrar una solución usando la consola.
La reproducción es ligeramente diferente a como se describe en la primera publicación. El paso 2 es crucial, los pasos 3 y 4 son menos importantes.
Ser un usuario administrador en un sitio de Discourse actualizado con una o más claves de dos factores habilitadas, como claves de seguridad y aplicación de autenticación.
Habilitar códigos de respaldo
Poder iniciar y cerrar sesión correctamente con esas claves de dos factores.
Asegurarse de que la configuración del sitio para forzar inicios de sesión de dos factores esté configurada en “no”.
Eliminar todos los elementos de dos factores (autenticadores y claves de seguridad) de su cuenta de administrador usando las herramientas de interfaz de usuario estándar en la pestaña de Seguridad de las preferencias del perfil de usuario del administrador.
Cerrar sesión.
Lo que sucede es que si se han eliminado todos los elementos de dos factores, los códigos de respaldo todavía están presentes en la base de datos y la autenticación de dos factores no se considera deshabilitada al iniciar sesión.
Dado que ya no hay un autenticador ni una clave de seguridad, el usuario no puede usar los códigos de respaldo.
Una vez que se han eliminado todos los autenticadores y claves, los códigos de respaldo ni siquiera se pueden eliminar en Perfil - Seguridad.
Solución propuesta: Cuando se elimina el último elemento de seguridad del usuario, también se deben eliminar los códigos de respaldo.
Solución alternativa: eliminar todos los registros de UserSecondFactor para este usuario de la base de datos.
¿Es posible que se implemente una solución para esto en una versión más reciente de Discourse? Hoy me sucedió exactamente lo mismo y fue un problema recuperar mi cuenta.
Tengo el mismo problema con un usuario que se queja de que no puede iniciar sesión. Este usuario tenía habilitada la autenticación de dos factores (2FA) en su cuenta en algún momento, pero luego la eliminó. El mensaje de error que recibe cuando intenta iniciar sesión es:
El método de dos factores seleccionado no está habilitado para tu cuenta.
Desde el menú de administrador, veo que el perfil del usuario indica “Autenticación de dos factores” como “No”.
Dado que es de mala educación pedirle la contraseña al usuario, intenté cambiar su correo electrónico o añadir un correo electrónico secundario que controlo. Sin embargo, después de hacer clic en “Confirmar” en la URL del correo electrónico de confirmación, recibo este error:
El método de dos factores seleccionado no es válido.
… y el correo electrónico no se cambia/añade.
No tengo acceso a la consola ni a la base de datos de esta instalación de Discord porque está “gestionada”.
¿Hay algo más que pueda intentar? ¿O el usuario está bloqueado de su cuenta para siempre?
No tengo acceso a la consola de discourse, porque esta es una instancia de discourse “alojada”.
Los administradores deben poder borrar la configuración de 2FA (autenticación de dos factores) desde la interfaz de administración, es extremadamente poco profesional tener que pedirles a nuestros usuarios sus contraseñas.
Este es claramente un error importante que debe resolverse. ¿Cómo podemos informar formalmente sobre esto y rastrear su progreso de corrección de errores?
Como proyecto OpenSource con una instancia de discourse alojada, no puedo acceder a la consola ni a la base de datos, solo tengo la interfaz de administración.
En realidad, no estoy de acuerdo. Cuando se deshabilita la 2FA, los códigos de respaldo de la 2FA deben ser completamente ignorados y no importar en absoluto.
Al arreglar esto en el lugar equivocado (cuando se elimina el último método de 2FA, se eliminan los códigos de respaldo), todavía tenemos personas que no pueden iniciar sesión y simplemente se rindieron sin informar.
Al arreglar el error real (considerando los códigos de respaldo cuando la 2FA está deshabilitada), solucionamos esto para el 100% de los usuarios afectados, de inmediato, en lugar de simplemente asegurarnos de que esto no siga sucediendo a nuevos usuarios.
Debes no deshabilitar 2FA directamente, primero debes:
eliminar todos los códigos de respaldo 2FA
verificar tres veces que todos los códigos de respaldo 2FA se hayan eliminado
solo entonces deshabilitar 2FA
Usando este método, en realidad puedes deshabilitar 2FA. Esto es cierto tanto para los usuarios administradores que suplantan a los usuarios para solucionar esto, como para cualquier usuario normal que simplemente quiera deshabilitar 2FA.