L’enregistrement (create) renvoie un objet d’attestation qui contient les données d’authentificateur (avec l’ID du nouvel identifiant et sa clé publique COSE) et une déclaration d’attestation ; l’authentification (get) renvoie les données d’authentificateur, clientDataJSON et une signature sur authenticatorData ‖ SHA-256(clientDataJSON). La partie de confiance vérifie le challenge, l’origine et le type dans clientDataJSON, le condensat du RP ID et les indicateurs dans les données d’authentificateur, ainsi que la signature (WebAuthn Level 3, §7.1 et §7.2).
Le niveau 3 a normalisé des fonctionnalités que les navigateurs proposaient déjà : des fonctions utilitaires de sérialisation JSON (toJSON, parseCreationOptionsFromJSON), l’API Signal pour la mise à jour des identifiants, getClientCapabilities(), les requêtes d’origines associées (related origin requests), la création conditionnelle et l’extension PRF pour dériver des clés de chiffrement. Le niveau 2 a été publié en avril 2021, le niveau 1 en mars 2019.
WebAuthn est le volet web de FIDO2 ; CTAP relie le navigateur aux authentificateurs externes. L’inspecteur WebAuthn décode clientDataJSON, les données d’authentificateur et les objets d’attestation.