In WebAuthn, assertion describes two things:
Firstly, an assertion is the process to prove that the authenticator has possession of the private key during the login phase. Its primary function is to:
Secondly, during the login phase an assertion object is created by the authenticator and returned to the Relying Party to communicate information about the used credential and the above mentioned validation.
This can be seen in the process flow of the Login in WebAuthn:
{ "root": { "id": "QFPlQVypLmmx71e0tmS3IfCFky0", "rawId": "QFPlQVypLmmx71e0tmS3IfCFky0", "type": "public-key", "response": { "authenticatorData": { "rpIdHash": "t8DGRTBfls-BhOh2QC404...", "flags": { "userPresent": true, "userVerified": true, "backupEligible": true, "backupStatus": true, "attestedData": true, "extensionData": true }, "counter": 0 }, "clientDataJSON": { "type": "webauthn.get", "challenge": "EGYtAMgi8B2Ey1FNVfVF93...", "origin": "https://passkeys.eu", "crossOrigin": false }, "signature": "MEQCICx0J-G4mmL3g0TFK3uVxQN5...", "userHandle": "YWxleCBtdWxsZXI" }, "authenticatorAttachment": "platform" } }
Continue reading for a technical breakdown of the most important attributes.
The assertion object contains many attributes, here's a quick explanation of some selected attributes:
"flags": { "userPresent": true, "userVerified": true, "backupEligible": true, "backupStatus": true, "attestedData": true, "extensionData": true }
The flags provide important information about the authentication.
true, physical
user presence was tested by the authenticator (e.g.
by pressing a button or touching a key).true, the user was verified by the authenticator,
e.g. with a fingerprint scan or entering a PIN.Warning: Only if BOTH flags are set to true, the attestation is a 2-Factor-Authentication. If only UP is set to true, the login is considered a Single-Factor-Authentication.
true, the credential can be backed up (e..g in
iCloud Keychain) and thus be made available on another
authenticator.true, the credential is currently backed up (e.g. in
iCloud Keychain) and thus could be available on another
authenticator (e.g. with access to the same
iCloud Keychain).Possible Combinations and their meanings are:
"clientDataJSON": { "type": "webauthn.get", "challenge": "AAABeB78HrIemh1jTdJICr_3QG_RMOhp", "origin": "https://passkeys.eu", "crossOrigin": false }
Read more about clientDataJSON in the respective glossary article.
{ "signature": "MEQCICx0J-G4mmL3g0TFK3uVxQN5..." }
The signature is used to verify that the user trying to log in, actually has the
private key. It is created by concatenating the authenticatorData and clientDataHash
(i.e. the SHA-256 version of ClientDataJSON) and signing the result with the private key
(in the authenticator). To verify with the public key, we concatenate authenticatorData
and clientDataHash as well. If the verification result returns true, the
authentication is successful.
Corbado is the Authentication Intelligence Platform for CIAM teams running consumer authentication at scale. We help you see what IDP logs and generic analytics tools can't: where passkeys, passwords, OTP, social login and fallback journeys succeed, stall or fail, which devices and browsers create friction, and when an OS update silently breaks login. Two products: Corbado Observe layers process mining and observability across authentication journeys. Corbado Connect adds managed passkeys with analytics built in alongside your IDP. VicRoads runs passkeys for 5M+ users with Corbado (+80% passkey activation). Talk to a Passkey Expert →
Table of Contents
Related Articles