Las partes de confianza (RP) pueden determinar qué proveedor de llaves de acceso crea una llave de acceso examinando el 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 y la solidez de la llave de acceso, incluso si el usuario pierde una de sus llaves de acceso y no puede acceder a la cuenta, puede acceder al usuario de confianza con llaves de acceso alternativas.
El desafío para los usuarios que administran varias llaves de acceso en un RP es identificar la llave 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 los RP adjunten información sobre la llave de acceso, como la fecha de creación y la fecha de uso más reciente, 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. Idealmente, las llaves de acceso se nombran automáticamente para reflejar los indicadores que se envían 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 de confianza pueden usar para nombrar llaves de acceso, pero plataformas como Android, iOS o navegadores para computadoras de escritorio con capacidades de extensión permiten que los administradores de contraseñas de terceros creen una llave de acceso, y la cadena de usuario-agente no representa necesariamente quién es el proveedor real de la llave de acceso.
Con el identificador único global de certificación de autenticador (AAGUID), incluido en la credencial de clave pública que se muestra en el registro de una llave de acceso, los RP pueden determinar el proveedor de la llave de acceso y usarla 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.
Los 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"
. El RP puede anotar la llave de acceso en la lista 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 AAGUIDs de origen comunitario. Si buscas el AAGUID en la lista, puedes encontrar el nombre del proveedor de llaves de acceso y el texto de datos de SVG del í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
AAGUID es una cadena única que identifica al proveedor de llaves de acceso que creó una llave de acceso. Los RP pueden usar AAGUID para facilitar que los usuarios administren sus llaves de acceso. Se puede usar un repositorio de AAGUIDs de origen comunitario para asignar AAGUIDs a proveedores de llaves de acceso.