Descubre cómo puedes integrar llaves de acceso en tu servicio.
Anatomía de un sistema de llaves de acceso
Un sistema de llaves de acceso consta de algunos componentes:
- Usuario de confianza: En el contexto de la llave de acceso, un usuario de confianza (RP) se encarga de la emisión y autenticación de la llave de acceso. El RP debe operar un cliente (un sitio web o una app que cree llaves de acceso o se autentique con llaves de acceso) y un servidor para registrar, almacenar y verificar las credenciales generadas por las llaves de acceso del cliente. Una aplicación para dispositivos móviles con llave de acceso debe estar vinculada a un dominio de servidor de RP mediante el mecanismo de asociación que proporciona el SO, como los Vínculos de recursos digitales.
- Autenticador: Un dispositivo informático, como un teléfono celular, una tablet, una laptop o una computadora de escritorio que puede crear y verificar llaves de acceso mediante la función de bloqueo de pantalla que ofrece el sistema operativo.
- Administrador de contraseñas: Es el software instalado en los dispositivos del usuario final que entrega, almacena y sincroniza llaves de acceso, como el Administrador de contraseñas de Google.
Flujo de registro
Usa la API de WebAuthn en un sitio web o la biblioteca del Administrador de credenciales en una app para Android para crear y registrar una llave de acceso nueva.
Para crear una nueva llave de acceso, debes proporcionar algunos componentes clave:
- ID de la RP: Proporciona el ID del usuario de confianza en forma de dominio web.
- Información del usuario: El ID, el nombre de usuario y un nombre visible del usuario.
- Credenciales para excluir: Información sobre las llaves de acceso almacenadas previamente para evitar el registro duplicado.
- Tipos de llaves de acceso: Indica si se debe usar el dispositivo en sí ("autenticador de plataforma") como autenticador o una llave de seguridad extraíble ("autenticador multiplataforma o itinerante"). Además, los emisores pueden especificar si desean que la credencial sea detectable para que el usuario pueda seleccionar una cuenta con la que acceder.
Una vez que un RP solicita crear una llave de acceso y el usuario la verifica con un desbloqueo de pantalla, se crea una nueva llave de acceso y se muestra una credencial de clave pública. Envíala al servidor y almacena el ID de credencial y la clave pública para una autenticación futura.
Aprende a crear y registrar una llave de acceso en detalle:
- En la Web: Crea una llave de acceso para los accesos sin contraseña.
- En Android: Cómo llevar la autenticación sin problemas a tus apps con llaves de acceso a través de la API de Administrador de credenciales
Flujo de autenticación
Usa la API de WebAuthn en un sitio web o la biblioteca del Administrador de credenciales en una app para Android a fin de autenticar con una llave de acceso registrada.
Para autenticar con una llave de acceso, hay un par de componentes clave que debes proporcionar:
- ID de la RP: Proporciona el ID del usuario de confianza en forma de dominio web.
- Desafío: Es un desafío generado por el servidor que evita los ataques de repetición.
Una vez que un RP solicita una autenticación con una llave de acceso y el usuario la verifica con un desbloqueo de pantalla, se muestra una credencial de clave pública. Envíala al servidor y verifica la firma con la clave pública almacenada.
Obtén información detallada para autenticar con una llave de acceso:
- En la Web: Cómo acceder con una llave de acceso a través del autocompletado de formularios
- En Android: Cómo llevar la autenticación sin problemas a tus apps con llaves de acceso a través de la API de Administrador de credenciales
Integraciones del servidor
Cuando se crea una llave de acceso, el servidor debe proporcionar parámetros clave, como un desafío, información del usuario, IDs de credenciales para excluir y mucho más. Luego, verifica la credencial de clave pública creada que envió el cliente y la almacena en la base de datos. Para autenticarse con una llave de acceso, el servidor debe validar cuidadosamente la credencial y verificar la firma para permitir que el usuario acceda.
Obtén más información en nuestras guías del servidor:
- Introducción a la implementación de llaves de acceso del servidor
- Registro de la llave de acceso del servidor
- Autenticación con llave de acceso del servidor
Mecanismos de autenticación existentes (heredados)
Cuando admites llaves de acceso en tu servicio existente, la transición del mecanismo de autenticación anterior, como las contraseñas, a las llaves de acceso, no se realizará en un día. Sabemos que es probable que elimines el método de autenticación más débil lo antes posible, pero que podría confundir a los usuarios o dejarlos atrás. Te recomendamos que conserves el método de autenticación existente por el momento.
Hay varias razones:
- Hay usuarios en un entorno incompatible con las llaves de acceso: La compatibilidad con llaves de acceso se está expandiendo ampliamente en varios sistemas operativos y navegadores, pero aquellos que usan versiones anteriores aún no pueden usar las llaves de acceso.
- El ecosistema de las llaves de acceso aún no evoluciona: El ecosistema de llaves de acceso está evolucionando. Los detalles de UX y la compatibilidad técnica entre diferentes entornos pueden mejorar.
- Es posible que los usuarios aún no estén listos para vivir con una llave de acceso: Hay personas que dudan de saltar a cosas nuevas. A medida que se desarrolle el ecosistema de llaves de acceso, tendrán una idea de cómo funcionan y por qué es útil para ellas.
Revisa tu mecanismo de autenticación existente
Si bien las llaves de acceso hacen que la autenticación sea más simple y segura, conservar los mecanismos antiguos es como dejar un agujero. Te recomendamos revisar y mejorar tus mecanismos de autenticación existentes.
Contraseñas
Crear contraseñas seguras y administrarlas para cada sitio web son tareas desafiantes para los usuarios. Se recomienda usar un administrador de contraseñas integrado en el sistema o uno independiente. Si realizas un pequeño cambio en el formulario de acceso, los sitios web y las apps pueden marcar una gran diferencia en la seguridad y la experiencia de acceso. Mira cómo puedes hacer esos cambios:
- Prácticas recomendadas para el formulario de acceso (Web)
- Prácticas recomendadas para el formulario de registro (Web)
- Cómo hacer que el usuario acceda con el Administrador de credenciales (Android)
Autenticación de dos factores
Si bien usar un administrador de contraseñas ayuda a los usuarios a controlar las contraseñas, no todos las usan. Pedir una credencial adicional llamada contraseña de un solo uso (OTP) es una práctica común para proteger a esos usuarios. Por lo general, las OTP se proporcionan a través de un correo electrónico, un mensaje SMS o una app de autenticación, como el Autenticador de Google. Dado que las OTP suelen ser un texto corto que se genera de forma dinámica solo durante un período limitado, disminuye la probabilidad de usurpaciones de cuentas. Estos métodos no son tan sólidos como una llave de acceso, pero son mucho mejores que dejar a los usuarios solo con una contraseña.
Si seleccionas SMS como una forma de entregar una OTP, consulta las siguientes prácticas recomendadas para optimizar la experiencia del usuario y poder ingresarla.
- Prácticas recomendadas para el formulario de OTP por SMS (Web)
- Verificación automática de SMS con la API de SMS Retriever (Android)
Federación de identidades
La federación de identidades es otra opción que permite que los usuarios accedan de forma fácil y segura. Con la federación de identidades, los sitios web y las apps pueden permitir que los usuarios accedan con su identidad desde un proveedor de identidad de terceros. Por ejemplo, Acceder con Google proporciona excelentes conversiones a los desarrolladores, y los usuarios consideran que es más fácil y preferible que la autenticación basada en contraseña. La federación de identidades es complementaria a las llaves de acceso. Es ideal para registrarse, ya que el sitio web o la app pueden obtener información básica de perfil del usuario en un solo paso, mientras que las llaves de acceso son excelentes para optimizar la reautenticación.
Ten en cuenta que, después de que Chrome elimine gradualmente las cookies de terceros en 2024, algunos sistemas de federación de identidades pueden verse afectados según cómo se hayan creado. Para mitigar el impacto, se está desarrollando una nueva API de navegador llamada Federated Credential Management API (FedCM). Si ejecutas un proveedor de identidad, consulta los detalles y comprueba si necesitas adoptar FedCM.
- API de Federated Credential Management (Web, FedCM)
- Descripción general de Acceder con Google para la Web (Web y Acceder con Google)
- Descripción general del acceso con One Tap en Android (Android, acceso con One Tap)
"Vínculos mágicos"
El acceso con vínculo mágico es un método de autenticación en el que un servicio entrega un vínculo de acceso a través de un correo electrónico para que el usuario pueda hacer clic en él y autenticarse. Si bien esto ayuda a los usuarios a acceder sin recordar una contraseña, cambiar entre el navegador o la app y el cliente de correo electrónico será un inconveniente. Además, como el mecanismo de autenticación se basa en el correo electrónico, la seguridad débil del proveedor de correo electrónico puede poner en riesgo las cuentas de los usuarios.
Recursos de aprendizaje
Web
Para integrar llaves de acceso en tu sitio web, usa la API de Web Authentication (WebAuthn). Para obtener más información, consulta los siguientes recursos:
- Crea una llave de acceso para accesos sin contraseña: Es un artículo en el que se analiza cómo permitir que los usuarios creen llaves de acceso para un sitio web.
- Accede con una llave de acceso a través del autocompletado de formularios: Se trata de un artículo en el que se analiza cómo se debe diseñar el acceso sin contraseña con llaves de acceso y, al mismo tiempo, admitir usuarios de contraseñas existentes.
- Implementa llaves de acceso con autocompletado de formularios en una app web: Es un codelab que te permite aprender a implementar llaves de acceso con el autocompletado de formularios en una app web para crear un acceso más simple y seguro.
- Obtén información para implementar llaves de acceso mediante el autocompletado de formularios en una app web: Un video de taller en el que se analiza el codelab Cómo implementar llaves de acceso con el autocompletado de formularios en una app web para implementar llaves de acceso con autocompletado de formularios en una app web para crear un acceso más simple y seguro.
- Cómo compilar tu primera app de WebAuthn: Un codelab que te permite aprender a compilar una funcionalidad de reautenticación simple con una llave de acceso en tu sitio web.
Android
Para integrar las llaves de acceso en tu app para Android, usa la biblioteca del Administrador de credenciales. Para obtener más información, consulta los siguientes recursos:
- Cómo hacer que el usuario acceda con el Administrador de credenciales: Es un artículo en el que se analiza cómo integrar el Administrador de credenciales en Android. El Administrador de credenciales es una API de Jetpack que admite varios métodos de acceso, como nombres de usuario y contraseñas, llaves de acceso y soluciones de acceso federado (como Acceder con Google) en una sola API.
- Cómo llevar la autenticación sin problemas a tus apps con llaves de acceso a través de la API de Administrador de credenciales: Se trata de un artículo en el que se analiza cómo integrar llaves de acceso a través del Administrador de credenciales en Android.
- Aprende a simplificar los recorridos de autenticación con la API de Credential Manager en tu app para Android: Descubre cómo implementar la API de Credential Manager para proporcionar una autenticación fluida y segura en tu app con llaves de acceso o contraseñas.
- App de ejemplo del Administrador de credenciales: Es un código de muestra que ejecuta el Administrador de credenciales con las llaves de acceso.
- Cómo integrar el Administrador de credenciales en tu solución de proveedor de credenciales | Desarrolladores de Android
UX
Conoce las recomendaciones sobre la experiencia del usuario para las llaves de acceso: