@jomaxro, gracias. Quizás lo que me confundió fue que intenté establecer enforce_second_factor en “all”, pero no pude, ya que se me informó: “No puedes exigir la 2FA si los inicios de sesión locales están deshabilitados”. Si no es demasiado fuera de tema, ¿cuál es la solución a eso?
Así que el equipo me ha corregido. Discourse ID sí utiliza OAuth2 en su funcionamiento interno; mis disculpas. Pensé que utilizaba un protocolo diferente.
En respuesta a tu pregunta, no admitimos la autenticación en dos pasos (2FA) con inicios de sesión externos. Como indicaba el mensaje que viste, la 2FA no se puede exigir sin tener habilitados los inicios de sesión locales. Confiamos en el proveedor de inicio de sesión externo (en este caso, Discourse ID, pero esto aplica a todos los proveedores externos) para gestionar la 2FA, incluida su exigencia.
@jomaxro, ¿significa eso que, con el plan gratuito de prueba, no puedo modificar esa preferencia? ¿O puedo, de alguna manera, desconectar Discourse ID?
Pregunta para nosotros: ¿El IdP transmite la información sobre si el usuario realizó o no la autenticación multifactor (MFA) al SP?
Estoy pensando en un mecanismo análogo a U2F / FIDO: el programa puede solicitar una atestación del dispositivo sobre el nivel de interacción del usuario esperado o requerido para la credencial.
Si Discourse ID… o cualquier otro IdP (¿SAML? ¿oAuth2? ¿OIDC?) transmite esta información al SP, sería un dato que podríamos utilizar potencialmente.
Si no es así, nos vemos obligados a implementar MFA después del inicio de sesión federado para obtener esta garantía.
La forma estándar de hacerlo es mediante OIDC. Discourse ID está construido actualmente solo con OAuth2. Para admitir un indicador de MFA, necesitaríamos implementar OIDC en la capa del proveedor y transmitir los valores de MFA de ida y vuelta para los clientes que lo requieran.
Hay varias complicaciones:
En el núcleo de Discourse, tenemos la opción de exigir 2FA solo para ciertos tipos de usuarios (personal o todos); probablemente necesitemos algo similar que se admita a través de ID.
ID permite iniciar sesión mediante Google/Apple/Facebook/Github, pero no indican de manera fiable si el usuario completó el 2FA al iniciar sesión… es posible que necesitemos implementar 2FA en la capa de ID y, probablemente, exigir 2FA doble a algunos usuarios, lo cual no es ideal.
¿Es el 2FA en la capa del proveedor de identidad (es decir, no en la instancia local) suficiente para todos los consumidores? En términos generales, creo que sí, pero necesitaríamos realizar un poco más de investigación antes de comprometernos con ello.