At the Google I/O '18 a demo was shown in which a user authenticates at PayPal by just providing a fingerprint (see YouTube 24:40). This was done in a browser running on a Smartphone which has a fingerprint sensor and requires the browser to implement the WebAuthn standard. The fingerprint unlocks the private key which is used for a challenge-response authentication and which is stored on an authenticator.
As far as I understood user interaction (i.e. asking for a fingerprint) can be disabled by setting the userVerification
argument to discouraged
(see w3.org). The user will be logged in automatically.
Can this flow also be implemented on a desktop browser without any extra hardware? Is there a default authenticator implemented in the browsers which could be used for that?
Concretely, I would like to do this:
- register a public/private key pair in the desktop browser via WebAuthn so that the private key cannot be accessed via JavaScript (e.g. to mitigate XSS attacks)
- every time data is send to a server sign that data via the WebAuthn API with the private key stored in the "default" authenticator without requiring user interaction