Collez une réponse d’enregistrement ou d’authentification sérialisée pour examiner ses données. Le décodage ne vérifie ni les signatures, ni l’attestation, ni le défi du serveur.
Fonctionne localement dans votre navigateurUne partie utilisatrice de production doit vérifier le défi, l'origine, le hachage de l'ID RP, la politique de présence ou de vérification de l'utilisateur, la signature, les algorithmes, la politique d'attestation et le comportement du compteur de signatures.
Cette page lit une PublicKeyCredential sérialisée — le JSON qu’une partie utilisatrice reçoit de navigator.credentials.create() ou navigator.credentials.get() — et rend ses deux moitiés lisibles — le plus souvent le moyen le plus rapide de voir ce que contenait réellement un enregistrement ou une assertion en échec. clientDataJSON est décodé depuis Base64URL puis analysé, et les données de l’authentificateur sont séparées en hachage de l’ID RP, octet d’indicateurs, compteur de signatures et, pour un enregistrement, AAGUID, ID d’identification et clé publique COSE.
Tout s’exécute dans le navigateur. La page n’appelle pas navigator.credentials, ne contacte aucune partie utilisatrice et n’envoie nulle part l’information d’identification. Décoder n’est pas vérifier : la signature, la déclaration d’attestation et la comparaison du défi appartiennent à votre serveur.
L’octet d’indicateurs décrit la cérémonie, pas l’information d’identification. UP signale un utilisateur présent, UV une vérification par code ou biométrie, BE que l’information peut être copiée vers un autre authentificateur et BS qu’elle l’est actuellement — une passkey synchronisée active les deux. AT marque les données attestées (AAGUID, ID d’identification et clé publique) qui n’existent que lors d’un enregistrement, ED les données d’extension.
Le compteur de signatures est un entier non signé de 32 bits que l’authentificateur incrémente à chaque assertion. Le comparer à la valeur enregistrée pour cette information est le contrôle de clone classique, mais un compteur qui ne bouge jamais ne prouve rien à lui seul : beaucoup d’authentificateurs de plateforme renvoient zéro en permanence. Le hachage de l’ID RP est le SHA-256 de l’identifiant de la partie utilisatrice pour lequel l’information a été créée ; le comparer à la valeur attendue montre qu’une information captée sur un site n’est pas rejouée sur un autre.
clientDataJSON est du JSON encodé en Base64URL que le navigateur assemble à partir du défi, de l’origine et du type de cérémonie (webauthn.create ou webauthn.get). La page le décode, l’analyse et signale crossOrigin lorsque le navigateur a marqué le flux comme intégré à une autre page. Les octets suivants forment une structure binaire compacte : 32 octets de hachage de l’ID RP, un octet d’indicateurs, quatre octets de compteur, puis les données attestées uniquement si l’indicateur AT est actif.
Une réponse d’enregistrement contient un attestationObject, une carte CBOR qui porte les mêmes données d’authentificateur sous authData ; la page parcourt la carte CBOR pour les atteindre. Le format et la déclaration d’attestation qui l’accompagnent ne sont ni affichés ni contrôlés ici. Les champs que le navigateur ajoute autour de la réponse, comme transports et clientExtensionResults, ne figurent pas non plus dans le rapport.
Une information d’identification décodée est un indice, pas une preuve. La partie utilisatrice doit encore comparer le défi à celui qu’elle a émis pour cette session, vérifier que l’origine est la sienne, comparer le hachage de l’ID RP à l’ID RP attendu et vérifier la signature sur les données de l’authentificateur et le SHA-256 de clientDataJSON avec la clé publique conservée lors de l’enregistrement.
Elle doit aussi appliquer sa propre politique de vérification de l’utilisateur et d’attestation, restreindre les algorithmes acceptés et décider ce que le compteur de signatures et les indicateurs de sauvegarde signifient pour son modèle de menace. Cette page nomme les valeurs COSE qu’elle reconnaît — ES256, EdDSA, ES384, ES512, PS256, PS384, PS512, RS256, RS384, RS512 avec les courbes P-256, P-384, P-521, Ed25519 et Ed448 — et affiche toute autre valeur sous forme de nombre brut, ce qui est une étiquette et non une décision de politique.