Las partes que confían (RP) pueden determinar qué proveedor de llaves de acceso creó una llave de acceso examinando el AAGUID de la credencial de clave pública asociada.
Desafíos relacionados con la administración de llaves de acceso
Uno de los beneficios de usar llaves de acceso es que permiten a los usuarios crear varias llaves para una sola cuenta. Con esta flexibilidad y la solidez de las llaves de acceso, incluso si el usuario pierde una de sus llaves de acceso y no puede acceder a la cuenta, podrá acceder al sitio web o la app de la parte que confía con llaves de acceso alternativas.
El desafío para los usuarios que administran varias llaves de acceso en un RP es identificar la llave de acceso correcta cuando necesitan editar o borrar una específica entre otras. Un buen ejemplo es cuando un usuario quiere quitar una llave de acceso que no usa. Se recomienda que los 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.
Los RP también pueden permitir que los usuarios nombren una llave de acceso en cuanto se crea o más adelante, pero muchos usuarios no lo hacen. Lo ideal es que las llaves de acceso se nombren automáticamente según 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 las partes que confían pueden usar para nombrar las llaves de acceso, pero las plataformas como Android, iOS o los navegadores 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 la llave de acceso.
Con el identificador único global de certificación del autenticador (AAGUID), incluido en la credencial de clave pública que se devuelve en el registro de una llave de acceso, los RP pueden determinar el proveedor de la llave de acceso y ayudar a los usuarios a encontrar la llave de acceso correcta.
Cómo determinar el proveedor de llaves de acceso con el AAGUID
El 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.

Los RP pueden usar el AAGUID para identificar al proveedor de la llave 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"
. El RP puede anotar la llave de acceso en la lista de llaves de acceso para indicar que se creó en el Administrador de contraseñas de Google.

Para asignar un AAGUID a un proveedor de llaves de acceso, los RP pueden usar un repositorio de AAGUID de origen comunitario. Si buscas el AAGUID en la lista, puedes encontrar el nombre del proveedor de la llave de acceso y el texto de datos SVG de su ícono.
La recuperación del 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
El AAGUID es una cadena única que identifica al proveedor de claves de acceso que creó una clave de acceso. Los RP pueden usar el AAGUID para que los usuarios administren sus llaves de acceso con mayor facilidad. Se puede usar un repositorio de AAGUID proveniente de la comunidad para asignar AAGUID a proveedores de llaves de acceso.