Vincent
Created: April 13, 2024
Updated: May 8, 2024
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:
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:
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:
Read more about clientDataJSON in the respective glossary article.
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.
Enjoyed this read?
🤝 Join our Passkeys Community
Share passkeys implementation tips and get support to free the world from passwords.
🚀 Subscribe to Substack
Get the latest news, strategies, and insights about passkeys sent straight to your inbox.
We provide UI components, SDKs and guides to help you add passkeys to your app in <1 hour
Start for free