Obtén más información para integrar llaves de acceso en tu servicio.
Anatomía de un sistema de llaves de acceso
Un sistema de llaves de acceso consta de los siguientes componentes:
- Grupo de confianza: En el contexto de las llaves de acceso, un grupo de confianza (RP, por su abreviatura en inglés) controla la emisión y la autenticación de las llaves de acceso. El RP debe operar un cliente (un sitio web o una app que cree llaves de acceso o se autentique con ellas) y un servidor para registrar, almacenar y verificar las credenciales generadas por las llaves de acceso en el cliente. Una aplicación para dispositivos móviles de llave de acceso debe estar vinculada a un dominio del servidor de RP con el mecanismo de asociación proporcionado por el SO, como los vínculos de activos digitales.
- Authenticator: Es 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 con la función de bloqueo de pantalla que ofrece el sistema operativo.
- Administrador de contraseñas: Es un software instalado en los dispositivos del usuario final que proporciona, 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 de Credential Manager en una app para Android para crear y registrar una nueva llave de acceso.
Para crear una llave de acceso nueva, debes proporcionar algunos componentes clave:
- ID de RP: Proporciona el ID del grupo de confianza en forma de dominio web.
- Información del usuario: ID, nombre de usuario y nombre visible del usuario
- Credenciales para excluir: Es información sobre las llaves de acceso almacenadas previamente para evitar el registro duplicado.
- Tipos de llaves de acceso: Si se debe usar el dispositivo en sí ("autenticador de plataforma") como autenticador o una llave de seguridad desmontable ("autenticador de roaming o multiplataforma"). Además, las entidades que llaman pueden especificar si la credencial se puede detectar para que el usuario pueda seleccionar una cuenta con la que acceder.
Una vez que un RP solicita la creación de una llave de acceso y el usuario la verifica con un desbloqueo de pantalla, se crea una nueva llave de acceso y se devuelve una credencial de clave pública. Envía eso al servidor y almacena el ID de la credencial y la clave pública para la autenticación futura.
Obtén más información para crear y registrar una llave de acceso:
- 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 Credential Manager
Flujo de autenticación
Usa la API de WebAuthn en un sitio web o la biblioteca de Credential Manager en una app para Android para autenticarte con una llave de acceso registrada.
Para autenticarse con una llave de acceso, se deben proporcionar algunos componentes clave:
- ID de RP: Proporciona el ID del grupo de confianza en forma de dominio web.
- Desafío: Es un desafío generado por el servidor que evita los ataques de reproducció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 devuelve una credencial de clave pública. Envía eso al servidor y verifica la firma con la clave pública almacenada.
Obtén más información para autenticarte con una llave de acceso:
- En la Web: Accede 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 Credential Manager
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 se envió desde el cliente y almacena la clave pública 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 llaves de acceso del servidor
- Autenticación con llave de acceso del servidor
Mecanismos de autenticación existentes (heredados)
Cuando agregues compatibilidad con 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 producirá en un día. Sabemos que te inclinarías por eliminar el método de autenticación más débil lo antes posible, pero eso podría confundir a los usuarios o dejar a algunos atrás. Por el momento, te recomendamos que conserves el método de autenticación existente.
Hay varios motivos:
- Hay usuarios en un entorno incompatible con las llaves de acceso: La compatibilidad con las llaves de acceso se está expandiendo ampliamente en varios sistemas operativos y navegadores, pero quienes usan versiones anteriores aún no pueden usar llaves de acceso.
- El ecosistema de las llaves de acceso aún no está consolidado: El ecosistema de las llaves de acceso está en evolución. Los detalles de la UX y la compatibilidad técnica entre diferentes entornos pueden mejorar.
- Es posible que los usuarios aún no estén listos para usar una llave de acceso: Hay personas que dudan en probar cosas nuevas. A medida que madure el ecosistema de llaves de acceso, comprenderán cómo funcionan y por qué son útiles.
Revisa tu mecanismo de autenticación existente
Si bien las llaves de acceso hacen que tu autenticación sea más sencilla y segura, mantener los mecanismos antiguos es como dejar un agujero. Te recomendamos que vuelvas a revisar y mejorar tus mecanismos de autenticación existentes.
Contraseñas
Crear contraseñas seguras y administrarlas para cada sitio web son tareas difíciles para los usuarios. Se recomienda usar un administrador de contraseñas integrado en el sistema o uno independiente. Con un pequeño ajuste en el formulario de acceso, los sitios web y las apps pueden marcar una gran diferencia en su seguridad y en la experiencia de acceso. Consulta cómo puedes realizar esos cambios:
- Prácticas recomendadas para el formulario de acceso (Web)
- Prácticas recomendadas para los formularios de registro (Web)
- Cómo hacer que el usuario acceda con Credential Manager (Android)
Autenticación de dos factores
Si bien el uso de un administrador de contraseñas ayuda a los usuarios a administrar sus contraseñas, no todos los usuarios los usan. Solicitar una credencial adicional llamada contraseña de un solo uso (OTP) es una práctica común para proteger a estos usuarios. Por lo general, las OTP se proporcionan a través de un correo electrónico, un mensaje de texto o una app de autenticación, como el Autenticador de Google. Dado que las OTP suelen ser un texto corto generado de forma dinámica que solo es válido durante un período limitado, se reduce la probabilidad de que se produzca un secuestro 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 forma de enviar un OTP, consulta las siguientes prácticas recomendadas para optimizar la experiencia del usuario al ingresar el OTP.
- Prácticas recomendadas para el formulario de OTP por SMS (web)
- Verificación automática por SMS con la API de SMS Retriever (Android)
Federación de identidades
La federación de identidades es otra opción para permitir que los usuarios accedan de forma segura y sencilla. Con la federación de identidades, los sitios web y las apps pueden permitir que los usuarios accedan con su identidad de un proveedor de identidad externo. Por ejemplo, Acceder con Google genera conversiones excelentes para los desarrolladores, y los usuarios lo prefieren a la autenticación basada en contraseñas porque les resulta más fácil. La federación de identidades complementa las llaves de acceso. Es ideal para registrarse, ya que el sitio web o la app pueden obtener información básica del perfil del usuario en un solo paso, mientras que las llaves de acceso son ideales 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 podrían verse afectados según cómo se hayan creado. Para mitigar el impacto, se está desarrollando una nueva API del navegador llamada API de Federated Credential Management (FedCM, para abreviar). Si ejecutas un proveedor de identidad, consulta los detalles y verifica si necesitas adoptar FedCM.
- API de Federated Credential Management (Web, FedCM)
- Descripción general de Acceder con Google para la Web (Web, 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 envía un vínculo de acceso por 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 generará fricción. 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 los accesos sin contraseña: Un artículo en el que se explica 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: Un artículo en el que se analiza cómo se debe diseñar un acceso sin contraseña con llaves de acceso para adaptarse a los usuarios que usan contraseñas.
- Implementa llaves de acceso con el autocompletado de formularios en una app web: 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 sencillo y seguro.
- Ayuda a los usuarios a administrar las llaves de acceso de manera eficaz: Para aprovechar al máximo el potencial de las llaves de acceso, se debe prestar especial atención a la experiencia del usuario en torno a su administración. En este documento, se describen los lineamientos y las funciones opcionales para diseñar un sistema de administración de llaves de acceso intuitivo, seguro y sólido.
- Llaves de acceso seguras y sin inconvenientes: Una lista de tareas para la implementación: Esta lista de tareas te guiará por los aspectos clave de la implementación de llaves de acceso para lograr resultados óptimos en la experiencia del usuario (UX).
Android
Para integrar llaves de acceso en tu app para Android, usa la biblioteca de Credential Manager. Para obtener más información, consulta los siguientes recursos:
- Cómo hacer que el usuario acceda con Credential Manager: Un artículo en el que se explica cómo integrar Credential Manager en Android. Credential Manager 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 Credential Manager: Artículo en el que se explica cómo integrar llaves de acceso a través de Credential Manager en Android.
- Aprende a simplificar los recorridos de autenticación con la API de Credential Manager en tu app para Android: Aprende a implementar la API de Credential Manager para proporcionar una autenticación segura y fluida en tu app a través de llaves de acceso o contraseñas.
- App de ejemplo de Credential Manager: Es un código de ejemplo que ejecuta Credential Manager y admite llaves de acceso.
- Cómo integrar Credential Manager con tu solución de proveedor de credenciales | Android Developers
UX
Obtén información sobre las recomendaciones de la experiencia del usuario con llaves de acceso: