Originalmente, teníamos planeado apostar por completo por las contraseñas de acceso para ONCE/Campfire, y construimos el sistema de autenticación temprano completamente en torno a eso. ¡No fue una configuración sencilla! Manejar las contraseñas de acceso de forma adecuada es sorprendentemente complicado en el backend, pero lo logramos. Desafortunadamente, la experiencia del usuario no era la mejor, así que terminamos eliminándolo todo de nuevo.
El problema con las contraseñas de acceso es que son esencialmente una especie de paso intermedio hacia un administrador de contraseñas, pero están vinculadas a una plataforma específica de formas que no son obvias para el usuario en absoluto, y pueden dejarlo fácilmente incapaz de acceder a todas sus cuentas. De forma similar a como puede hacerlo la autenticación de dos factores, pero peor, ya que ni siquiera estás consciente de ello.
Tomemos un ejemplo sencillo. Tienes un iPhone y un ordenador con Windows. Chrome en Windows almacena tus contraseñas de acceso en Windows Hello, así que si te registras en un servicio en Windows y luego quieres acceder a él en iPhone, te quedarás atascado (¡a menos que seas tan previsor como para agregar una segunda contraseña de acceso de alguna manera desde el iPhone al ordenador con Windows!). La contraseña de acceso está en el dispositivo incorrecto, si estás lejos del ordenador y quieres iniciar sesión, y no es en absoluto obvio para la mayoría de los usuarios cómo podrían solucionarlo.
Incluso en el mejor escenario posible, en el que estás utilizando un iPhone y un Mac sincronizados con Keychain Access a través de iCloud, seguirás atascado si necesitas acceder a un servicio en el ordenador de un amigo en un apuro. O si no estás usando Keychain Access en absoluto. Hay muchas trampas en todo el flujo. Y las soluciones, como escanear un código QR con un dispositivo separado, son engorrosas y ajenas para la mayoría de los usuarios.
Si vas a enseñar a alguien cómo lidiar con todo esto y con todos los posibles problemas que podrían bloquearlos fuera de tu servicio, casi sería mejor enseñarles cómo usar un administrador de contraseñas multiplataforma como 1password.
Sí, las contraseñas tienen problemas. Si las estás utilizando sin un administrador de contraseñas, es probable que las reutilices en múltiples servicios, y si lo haces, todo lo que se necesita es un servicio con prácticas de contraseña terrible (como almacenarlas en texto plano en lugar de hashearlas con algo como bcrypt), y una brecha significará que los hackers podrían obtener acceso a todos tus otros servicios.
Pero solo porque tengamos un problema real no significa que todas las soluciones propuestas vayan a ser realmente mejores. Y en este momento, no veo cómo las contraseñas de acceso son realmente mejores, y, peor aún, pueden mejorar. A menos que aceptes la idea de que todas tus contraseñas deben estar vinculadas a un ecosistema informático, y así sea difícil usar computadoras alternativas.
Una alternativa decente a las contraseñas de acceso, si necesitas una capa adicional de seguridad, es apoyarse en el correo electrónico para el primer inicio de sesión desde un nuevo dispositivo. Tratar el correo electrónico como un segundo factor, pero solo en el primer inicio de sesión desde ese dispositivo. Todos tienen correo electrónico, todos entienden el correo electrónico. (¡Solo no nos obliguen a todos a pasar exclusivamente por enlaces mágicos, ya que también es una molestia para aquellos que realmente han adoptado un administrador de contraseñas!).
En resumen, me decepciona informar que las contraseñas de acceso no parecen valer la complejidad de la implementación (¡que es sustancial!) ni la complejidad y problemas de la experiencia del usuario. Así que seguimos con contraseñas y correos electrónicos. Fomentando la autenticación de dos factores opcional y los administradores de contraseñas, pero no los requiriendo.
Las contraseñas de acceso parecían prometedoras, pero no todas las buenas intenciones resultan en buenas soluciones.