Lably
Skip to content

WebAuthn

Public-key authentication standard

  • 12 min read
  • 6 chapters

Related on Lably

Through Password, Digital signature and Operating system

To use WebAuthn, users require a compatible authenticator. The standard does not specify how to store the keys required for signing, so a variety of authenticator types can be used. The most common authenticator type is a platform authenticator, which is built into the operating system of the device. Common platform authenticators include Android, Apple Keychain and Windows Hello. These make use of hardware security features (such as TEE and TPM), and often sync credentials between devices for ease-of-use. Another common authenticator type is a roaming authenticator, where a separate hardware device authenticates the user by connecting over USB, Bluetooth Low Energy, or near-field communications (NFC). Most smartphones can be used as roaming authenticators, and dedicated physical security keys are also used. WebAuthn is effectively backward compatible with FIDO Universal 2nd Factor (U2F) as they both use the CTAP protocol. Password managers can also be used as an authenticator, often with cloud sync. Where credentials sync is not viable or possible, WebAuthn Hybrid Transport can be used to access credentials stored on another authenticator such as a smartphone.

Like legacy U2F, WebAuthn is resistant to some phishing attacks as the authenticator only offers credentials that were registered on the same website. However, unlike U2F, WebAuthn can be implemented in a passwordless manner. Moreover, a roaming hardware authenticator resists malware, since the keys are stored on a separate device, which prevents the malware from accessing them directly.

The WebAuthn Level 1 and 2 standards were published as W3C Recommendations on 4 March 2019 and 8 April 2021 respectively. A Level 3 specification progressed through several Candidate Recommendation Snapshots during 2026, and in July 2026 the W3C proposed advancing it to full Recommendation status.

Background

The combination of username and password has been the standard mechanism for users to prove to a website that they are a specific person since the dawn of web-based services. However, password-based authentication has been known to be flawed for many years, even decades, with most issues relating to poor practices on either the user side or the server side.

Users routinely reuse passwords across services (which exposes them to credential stuffing), choose weak passwords that can be brute-forced and predicted in a short amount of time, and store them in insecure ways that allows for their disclosure (for example writing them down on a piece of paper or a document), with each of those contributing to the likelihood of credentials and account compromise.

Likewise, servers often deal with passwords improperly, both while storing them in databases, and while processing them. Common flaws include plaintext storage, lack of salted hashing (or more advanced schemes for at-rest credentials), arbitrary restrictions on password length and charset, mandatory ineffective password changes, and deliberate incompatibility with password managers (for instance, by preventing passwords to be pasted).

As a result, in 2012, Google alongside Yubico started working on a standard called Universal 2 Factor (U2F) that would allow websites to programatically verify a second-factor about the user by verifying the presence of hardware-based tokens (like smart cards) on the user. This standard was considered an improvement over existing solutions like time-based one-time password (TOTP) or SMS-based authentication that still left the user vulnerable to sophisticated phishing campaigns. The standard was later adopted into a larger industry wide collaboration called the FIDO (Fast IDentity Online) Alliance. The first draft for this proposed standard was published in 2014. In 2015, the FIDO Alliance started developing the FIDO 2 Project, releasing a proposed standard where they sought to improve upon the existing U2F standard by addressing many of its weaknesses. For example, the U2F standard still required to use of passwords alongside a second factor which still left websites vulnerable to password leaks and other similar attacks that were common against passwords. Additionally, the U2F specification only verified the second factor device and did not perform any user authentication. This meant that if the second factor device had been stolen or lost anyone with access to the U2F device would be able to bypass the second factor of authentication for accounts linked to the device.

In November 2015, the FIDO Alliance submitted the first version of FIDO 2 to the World Wide Web Consortium as a proposed web standard. In 2016, the W3C established a separate W3C Web Authentication Working Group to help write a standard for the new FIDO 2 project's authentication framework such that it could be integrated into browsers by default. The standard was adopted by major browser vendors in late 2018 and early 2019, with Chrome supporting the standard in version 67, Firefox in version 60 and Safari in version 13. In 2019, the FIDO 2 project alongside the W3C Web Authentication Working Group released the first version of the WebAuthn specification based on the FIDO 2 project as a W3C recommendation. Subsequently, the standard has gone through two revisions, being called Level 1, Level 2 with a Level 3 revision still being considered a Candidate Recommendation as of June 2026, meaning that it is considered mature and feature complete and is ready for implementation and testing by interested parties.

Sign in to keep reading

5 more chapters are free with a Lably account.

More in Computing and communication