Las partes confiables (RP) pueden determinar qué proveedor de llaves de acceso se crea con el análisis del AAGUID de la credencial de clave pública asociada.
Desafíos de la administración de llaves de acceso
Uno de los beneficios de usar llaves de acceso es que pueden permitir que los usuarios creen varias llaves de acceso para una sola cuenta. Con esta flexibilidad junto con la solidez de la llave de acceso, incluso si el usuario no puede acceder a la cuenta por perder una de sus llaves de acceso, podrá acceder al usuario de confianza con llaves de acceso alternativas.
El desafío para los usuarios que administran varias llaves de acceso en una parte restringida es identificar la correcta cuando necesitan editar o borrar una específica, entre otras. Un buen ejemplo es cuando un usuario quiere quitar una llave de acceso sin usar. Se recomienda que las RP adjunten información sobre la llave de acceso, como la fecha de creación y la fecha de último uso en la lista de llaves de acceso. Esto ayuda a los usuarios a encontrar una llave de acceso específica.
Las RP también pueden permitir que los usuarios asignen un nombre a una llave de acceso en cuanto se crean o más tarde, pero muchos usuarios no lo hacen. Lo ideal es que los nombres de las llaves de acceso reflejen automáticamente los indicadores enviados desde el cliente o la información incluida en la credencial de clave pública.
Los navegadores proporcionan una cadena de usuario-agente que los usuarios de confianza pueden usar para nombrar llaves de acceso, pero las plataformas como los navegadores Android, iOS o de escritorio con capacidades de extensión permiten que los administradores de contraseñas externos creen una llave de acceso, y la cadena de usuario-agente no necesariamente representa quién es el proveedor real de llaves de acceso.
Con la certificación del Autenticador del identificador único global (AAGUID), que se incluye en la credencial de clave pública que se devuelve cuando se registra una llave de acceso, los RP pueden determinar el proveedor de llaves de acceso y usarlo para que los usuarios encuentren fácilmente la llave de acceso correcta.
Determina el proveedor de llaves de acceso con AAGUID
AAGUID es un número único que identifica el modelo del autenticador (no la instancia específica del autenticador). El AAGUID se puede encontrar como parte de los datos del autenticador de una credencial de clave pública.
![Diseño del objeto de certificación con los datos del autenticador incluidos (que contienen los datos de las credenciales certificadas) y la declaración de la certificación.](https://web.dev/static/articles/webauthn-aaguid/image/attestation_object.jpg?authuser=3&hl=es-419)
Las RP pueden usar AAGUID para identificar al proveedor de llaves de acceso. Por ejemplo, si un usuario crea una llave de acceso en un dispositivo Android con el Administrador de contraseñas de Google, el RP recibirá un AAGUID de "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4"
. La RP puede anotar la llave de acceso en la lista para indicar que se creó en el Administrador de contraseñas de Google.
![La configuración de la llave de acceso en la página de configuración de seguridad muestra información detallada sobre cada llave de acceso.](https://web.dev/static/articles/webauthn-aaguid/image/passkey_management.jpg?authuser=3&hl=es-419)
Para asignar un AAGUID a un proveedor de llaves de acceso, los RP pueden usar un repositorio de la comunidad de AAGUID. Si buscas el AAGUID en la lista, se podrán encontrar el nombre del proveedor de llaves de acceso y el texto de datos de SVG de su ícono.
Recuperar el AAGUID es una función que proporcionan la mayoría de las bibliotecas de WebAuthn. En el siguiente ejemplo, se muestra el código de registro del servidor con SimpleWebAuthn:
// Import a list of AAGUIDs from a JSON file
import aaguids from './aaguids.json' with { type: 'json' };
...
// Use SimpleWebAuthn handy function to verify the registration request.
const { verified, registrationInfo } = await verifyRegistrationResponse({
response: credential,
expectedChallenge,
expectedOrigin,
expectedRPID,
requireUserVerification: false,
});
...
const { aaguid } = registrationInfo;
const provider_name = aaguids[aaguid]?.name || 'Unknown';
Conclusión
AAGUID es una cadena única que identifica al proveedor de llaves de acceso que creó la llave. Las RP pueden usar AAGUID para facilitar a los usuarios la administración de sus llaves de acceso. Se puede usar un repositorio de AAGUID originado por la comunidad para asignar AAGUID a proveedores de llaves de acceso.