digitalpoint
Well-known member
So I've been looking at ways to support password-less logins with my add-on without making the sign up process confusing. While this thread is more a general request for it to be in XenForo core, what I've been running around might be useful info in regards to that request...
So first some background about how/where WebAuthn credentials are stored. They can be either stored on the authenticator device or they can be stored on the server performing the authentication. In the case of the server storing the credentials, they are stored encrypted where the authenticator is the only way they can be decrypted. Most implementations (including my addon) stores the credentials on the server because there's a finite number of slots an authenticator has for storing credentials on the authenticator (for example, YubiKeys are limited to 25 on-board "resident keys", see FAQ).
For non-resident keys (ones stored encrypted on the server), the authenticator can support an unlimited number of keys (in that case it's simply a decryption device, rather than storing records for each site).
For password-less logins, you need to perform FIDO2/WebAuthn where the credentials are stored on the authenticator device (with password-less authentication, you are asking the authenticator what it knows about the site so it needs the credentials stored on the device itself, where doing it the other way around for things like two-step authentication is different [having a known user, you are able to present the encrypted credentials to the authenticator to see if it can perform decryption]).
Ignoring the on-boarding flow being different for users with and without password-less authentication, these are the current issues I see:
TL;DR
Password-less authentication takes 1 slot per site and authentication devices have a small number of slots.
So first some background about how/where WebAuthn credentials are stored. They can be either stored on the authenticator device or they can be stored on the server performing the authentication. In the case of the server storing the credentials, they are stored encrypted where the authenticator is the only way they can be decrypted. Most implementations (including my addon) stores the credentials on the server because there's a finite number of slots an authenticator has for storing credentials on the authenticator (for example, YubiKeys are limited to 25 on-board "resident keys", see FAQ).
For non-resident keys (ones stored encrypted on the server), the authenticator can support an unlimited number of keys (in that case it's simply a decryption device, rather than storing records for each site).
For password-less logins, you need to perform FIDO2/WebAuthn where the credentials are stored on the authenticator device (with password-less authentication, you are asking the authenticator what it knows about the site so it needs the credentials stored on the device itself, where doing it the other way around for things like two-step authentication is different [having a known user, you are able to present the encrypted credentials to the authenticator to see if it can perform decryption]).
Ignoring the on-boarding flow being different for users with and without password-less authentication, these are the current issues I see:
- Android and Windows simply do not do not support Passkeys with resident keys yet (see this page).
- Being limited to only 25 resident keys for things like YubiKey can be problematic in the future if a lot of sites move to password-less authentication.
TL;DR
Password-less authentication takes 1 slot per site and authentication devices have a small number of slots.