Soporte para inicio de sesión sin contraseña con Passkeys

:wave: ¡Thomas Cannon aquí, uno de los mantenedores principales de la organización Ruby passkeys!

Se han elaborado algunas bibliotecas para ayudar con esto, pero necesitamos desesperadamente mantenedores. Algunos enlaces relevantes a continuación:

Definitivamente queremos ayudar tanto como podamos; y agrupar recursos para hacer de las passkeys el estándar en todo el ecosistema Ruby :flexed_biceps:

8 Me gusta

Hola Thomas,

Discourse viene con su propio sistema de autenticación integrado directamente en webauthn para 2FA. Creo que la única gran deficiencia que tenemos ahora es que no permitimos que la 2FA sea el único factor (opcionalmente).

Me di cuenta de que Google también está completamente involucrado ahora (desde ayer), Passkeys: What they are and how to use them

Espero poder hacer de esto una opción para Discourse también, realmente odio las contraseñas y la 2FA + desafío solamente, para mí, se siente intrínsecamente mejor que la contraseña, sin duda.

7 Me gusta

¡Genial! ¿Cuál es la mejor manera en que podría ayudar?

2 Me gusta

Complicado, depende de cuán profundo quieras ir en la madriguera del conejo. Una PR de prototipo que agregue una configuración del sitio sería excelente, pero entiendo perfectamente que esto puede ser un compromiso de tiempo bastante grande.

2 Me gusta

¡Puedo intentarlo! Sin promesas, así que si alguien quiere ganarme para el almuerzo, ¡adelante!

5 Me gusta

Una actualización rápida: pronto llegará la compatibilidad con passkeys en Discourse. He estado trabajando en esto durante las últimas semanas y tenemos un par de PR (solicitudes de extracción) preliminares listas. Ver #23586, #23587 y #23591.

Creo que en unas 3-4 semanas podremos fusionar esto (detrás de una configuración del sitio desactivada por defecto). Y si concedemos unas semanas más para pruebas y corrección de errores, sospecho que podremos tener esto listo para producción en unos dos meses. ¡Mantente atento!

10 Me gusta

¡Hola! ¿Hay algo nuevo que decir sobre las passkeys en Discourse?

2 Me gusta

Parece que la PR final para esto se fusionó hace una semana, y el nombre de la configuración del sitio parece ser actualmente experimental_passkeys (actualmente una configuración oculta).

1 me gusta

Acabo de habilitar la configuración del sitio y agregué una passkey a mi cuenta en un foro que administro, y esto parece funcionar perfectamente. Para habilitarlo temprano en un sitio, esto debería funcionar:

cd /var/discourse
./launcher enter app
rails c
SiteSetting.experimental_passkeys=true

Una vez que esté habilitado, parece que solo tienes que abrir https://forum.example.com/my/preferences/security y agregar una passkey, luego cerrar sesión y usar la opción Iniciar sesión con una passkey para volver a iniciar sesión.

3 Me gusta

Hola a todos, sí, hemos fusionado algunas PR que añaden soporte para passkeys y ya lo estamos probando internamente.

Los pasos anteriores son correctos, si te gustaría ser un probador muy, muy temprano de la función. Todavía estamos ajustando algunas cosas, sin embargo, y una actualización/anuncio oficial llegará pronto.

9 Me gusta

Otra actualización antes de hacer un anuncio oficial: las passkeys ya están habilitadas aquí en meta. Por favor, pruébenlas e informen de cualquier problema respondiendo en este tema.

Nuestro plan es seguir probando la función durante otra semana más bajo la bandera experimental. Luego las anunciaremos oficialmente y eliminaremos la configuración experimental del sitio (es decir, el soporte de passkeys estará habilitado por defecto en todas las instancias que utilicen inicios de sesión locales).

7 Me gusta

¡Lo probé en Escritorio (Windows 11, Chrome) y funciona perfectamente! :+1:

Tuve que presionar Enviar correo electrónico de restablecimiento de contraseña para confirmar mi identidad porque normalmente inicio sesión con Google, así que no sé mi contraseña. :sweat_smile:


Lo probé en Android (10) y Chrome/App. Funciona bien, sin embargo:

  • Tocar la entrada activa el modal de passkey.
    • Ignorarlo y tocar la entrada de nuevo me permite escribir
  • Tocar el botón no hace nada (aparte de seleccionarlo y cerrar el teclado)


(yay, tiene lag, no estoy seguro por qué)

5 Me gusta

Gracias por el informe @Arkshine, había olvidado incluir un pequeño cambio en el componente móvil en un commit hace dos días. Un error vergonzoso, el botón no hacía nada en todos los dispositivos móviles.

De todos modos, ya está arreglado, lo acabo de probar en mi Android y debería funcionar para ti también.

2 Me gusta

Sí, ahora funciona, ¡gracias! :smile:

2 Me gusta

Parece que un sistema ChromeOS no se puede usar como clave de acceso con Discourse (aunque se puede usar como tal con otros sitios web), ¿es eso intencional?

No lo estamos bloqueando específicamente. ¿Qué es exactamente un “sistema chromeos”? ¿Es Chrome en ChromeOS? ¿Puede compartir la versión del navegador y del sistema operativo?

Sí.

Claro.
Desde chrome://version:

Clave Valor
Google Chrome 118.0.5993.86 (Build oficial) (64 bits)
Revisión d9a55e23605b9c433d369a305c71114843ec754d-refs/branch-heads/5993@{#1287}
Plataforma 15604.45.0 (Build oficial) canal estable octopus
User Agent Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36

¿Es suficiente información?

Aquí está lo que sucede cuando intento agregar una passkey usando esta computadora (elijo la opción “Este dispositivo” en el primer menú):


1 me gusta

Ah, interesante, gracias por la captura de pantalla. ¿Sospechas que el dispositivo no admite la verificación del usuario? ¿Puedes usar huella dactilar/Face ID o un PIN para desbloquear el dispositivo?

Según esta página, parece que la compatibilidad con Chrome OS es irregular.

1 me gusta

Creo que sí.

Uso una contraseña. Podría valer la pena señalar que puedo agregar este dispositivo como un método de 2FA a una cuenta usando webauthn, pero no puedo agregarlo como una passkey.

1 me gusta