Authentication

WebAuthn (Web Authentication API)

WebAuthn is the W3C browser API that lets web apps authenticate users with public-key cryptography backed by hardware — the foundation underneath passkeys and security keys.

Last reviewed 5/30/2026

Key points

  • W3C standard, supported in every major browser
  • Underlies passkeys (synced) and security keys (hardware-only)
  • Phishing-resistant by design (origin binding)
  • Part of the FIDO2 specification family alongside CTAP
  • Replaces passwords for both first- and second-factor scenarios

What it is

WebAuthn is the JavaScript API browsers expose so a website can ask the operating system or a security key, please prove who this user is using a public/private key pair you hold. It's the protocol layer underneath both passkeys and traditional FIDO2 security keys.

How it works

  • Registration: site calls navigator.credentials.create(). The authenticator (Touch ID, Windows Hello, YubiKey) generates a key pair scoped to that origin. The public key is sent to the server.
  • Authentication: site calls navigator.credentials.get(). The authenticator signs a server challenge with the private key. The server verifies with the stored public key.

Because the key is bound to the origin (https://example.com), a phishing page on examp1e.com cannot trick the authenticator into signing for it.

When buyers care

  • Implementing passwordless or strong second-factor auth
  • Meeting CISA / NIST guidance for phishing-resistant MFA
  • Anyone building B2B SaaS, fintech, healthcare, or government-facing apps in 2026

Common misconceptions

  • WebAuthn ≠ passkeys. Passkeys are credentials created via WebAuthn that are typically synced via iCloud, Google Password Manager, etc. WebAuthn is the protocol; passkeys are one consumer.
  • WebAuthn is not just for login. It's also strong for step-up auth on sensitive actions.

FAQ

Do I need WebAuthn if I have passkeys?

Yes — passkeys are implemented using WebAuthn. You build to the WebAuthn API; the OS/browser surfaces passkeys to the user.

Browser support?

Universal in modern browsers since 2019. Safari, Chrome, Edge, Firefox all support it.