RFC Webauthn
Este tema tiene como objetivo documentar los objetivos del proyecto Discourse en torno a la autenticación FIDO2 / Webauthn.
¿Por qué?
Agregar soporte para Webauthn en Discourse aumentará la seguridad de las cuentas de usuario, permitiendo cuentas sin contraseña fácilmente accesibles mediante las funciones seguras de sus dispositivos, como un lector de huellas dactilares de smartphone.
Métodos de autenticación
- Webauthn como autenticador de segundo factor (actúa como una alternativa a Google Authenticator)
- Webauthn como autenticador de primer factor (actúa como una alternativa al inicio de sesión con redes sociales)
- Webauthn como autenticador multifactor (inicio de sesión sin nombre de usuario)
Webauthn como autenticador de segundo factor
Esto permitirá que un usuario de Discourse, que ya tenga una cuenta activa, utilice Webauthn como 2FA, donde actualmente solo soportamos TOTP.
Cualquier método Webauthn puede funcionar aquí, ya sea biométricos del dispositivo (sensor de huellas dactilares en Android, Windows Hello en portátiles), un chip seguro del dispositivo (TPM, enclave seguro) o una clave de hardware (como una Yubikey).
Esto estaría disponible para cada usuario que navegue con:
- Microsoft Edge en Windows, usando Windows Hello (con reconocimiento facial, lector de huellas dactilares o PIN)
- Chrome en macOS, usando Touch ID
- Teléfono Android
- Portátil/Escritorio/Teléfono + Clave física (Yubikey, Google Titan)
Webauthn como autenticador de primer factor (cuentas sin contraseña)
Permite que un usuario inicie sesión en su cuenta de Discourse utilizando la autenticación Webauthn como alternativa a una contraseña. Si se configura un autenticador de primer factor, se le pedirá al usuario que utilice el autenticador en lugar de una contraseña.
Los mismos métodos de autenticación para la autenticación de segundo factor funcionarán para la autenticación de primer factor: biométricos, chip seguro o clave de hardware.
Flujo de registro
Sin campo de contraseña
Flujo de inicio de sesión
Webauthn como autenticador multifactor (inicios de sesión sin nombre de usuario)
Expondrá un método de inicio de sesión alternativo que solo solicita entrada Webauthn. La clave de seguridad registrada transmitirá adicionalmente información del ID de usuario al servidor de Discourse.
Este método de autenticación requiere actualmente una clave de autenticación moderna (por ejemplo, una Yubikey 5) más Google Chrome 76+, ya que depende de una función llamada “Claves residentes”. Dado que esto almacena datos en el autenticador, puede haber limitaciones; por ejemplo, una Yubikey 5C solo puede almacenar hasta 25 de ellas.
Flujo de registro
Estos flujos son una evolución del de inicios de sesión sin contraseña, no un flujo de inicio de sesión separado. Esto permite una implementación iterativa.
Sin campo de contraseña, añade una casilla adicional para el uso de claves residentes
Flujo de inicio de sesión
Si el nombre de usuario se deja en blanco, intentaremos obtener un
user_id del autenticador
Referencias
Demostraciones
https://webauthndemo.appspot.com/
Recursos
https://medium.com/@herrjemand/introduction-to-webauthn-api-5fd1fb46c285


























