Security

Passkeys for Business Websites in 2026: How They Work, What They Cost to Add, and How to Roll Them Out Without Locking Users Out

Passwordless sign-in with Face ID, fingerprint or a device PIN is now supported by every major browser and password manager. Here is the implementation plan we use.

TL;DR Passkeys replace passwords with a cryptographic key pair stored in the user's phone, laptop or password manager and unlocked with Face ID, fingerprint or PIN. They are phishing-resistant, cannot be reused or leaked from your database, and are supported by all major platforms. Add them alongside existing sign-in first, offer them after login, and keep a tested recovery path.

User signing in to a business website with a passkey and fingerprint prompt

A passkey is a sign-in credential that replaces a password with a public/private key pair. The private key stays on the user's device or in their password manager (iCloud Keychain, Google Password Manager, Microsoft, 1Password, Bitwarden and others) and is unlocked with Face ID, a fingerprint or the device PIN. Your server stores only the public key, so there is nothing worth stealing and nothing a phishing page can capture.

Passkeys vs passwords vs one-time codes

PasswordPassword + SMS/app codePasskey
Phishing-resistantNoNo: codes can be relayed in real timeYes: bound to your domain
Database breach exposes loginHashes can be crackedPartlyNo: only public keys stored
Reuse across sitesCommonCommonImpossible
User effortType and rememberType plus wait for codeOne biometric tap
Running costReset emails, supportSMS feesNone per sign-in

How passkeys work, in one paragraph

At registration the browser asks the user's authenticator to create a key pair for your domain (the relying party ID) and sends you the public key. At sign-in your server sends a random challenge. The authenticator signs it with the private key after the user unlocks it, and your server checks the signature with the stored public key. Because the key is tied to your exact domain, a look-alike phishing site cannot request it. This is the WebAuthn / FIDO2 standard every major browser implements.

The rollout plan

  1. Add passkeys alongside existing sign-in. Do not remove passwords on day one.
  2. Offer creation after a successful login ("Sign in faster next time with Face ID?"). Conversion is far higher than on a cold settings page.
  3. Enable autofill sign-in (conditional UI): add autocomplete="username webauthn" to the username field so saved passkeys appear in the browser's autofill list.
  4. Allow several passkeys per account and show where each was created, so users can add a second device and remove a lost one.
  5. Design account recovery before launch. Recovery is where attackers go once the front door is strong. Use a verified email plus a second factor, or support-assisted recovery with identity checks. Never a single SMS.
  6. Measure passkey adoption, sign-in success rate and recovery requests. Only then consider making passkeys the default for new accounts.

Libraries that do the hard part

  • Node.js: SimpleWebAuthn (server and browser packages).
  • .NET: the Fido2 .NET library (Fido2NetLib), or the passkey support being added to ASP.NET Core Identity.
  • Python: py_webauthn.
  • Hosted: most identity platforms (Auth0, Clerk, Microsoft Entra, AWS Cognito, Firebase via extensions) now offer passkeys as a setting.

Never write the signature-verification code yourself. Use a maintained library and keep it updated. That is supply-chain hygiene from the OWASP Top 10:2025.

What it costs

On a hosted identity platform, passkeys are usually a configuration change plus UI work: a few days. On a custom auth stack, budget roughly 1–3 weeks of engineering for registration, sign-in, conditional UI, device management, recovery and tests. There are no per-authentication fees, and support costs for password resets go down.

Passkeys don't fix everything

Passkeys secure the sign-in step. Session cookies still need Secure; HttpOnly; SameSite, your site still needs HTTPS with HSTS, and your APIs still need server-side authorization on every request. Check the browser-facing parts with our free website security audit.

ZetsApp adds passkeys and modern authentication to existing products as part of our web app development work. Ask for an estimate.

Frequently asked questions

Are passkeys more secure than passwords?

Yes. Passkeys cannot be phished, reused or leaked from a server breach, because the private key never leaves the user's authenticator and only works on the domain it was created for.

What happens if a user loses their phone?

Synced passkeys are restored from the user's password manager or platform account on a new device. For device-bound passkeys, users need a second registered passkey or your account-recovery process, so design recovery before launch.

Do passkeys work on all browsers?

All current major browsers and operating systems support passkeys through WebAuthn, including Chrome, Safari, Edge and Firefox on desktop and mobile.

Can I use passkeys and passwords together?

Yes, and you should at first. Offer passkeys as an option, encourage adoption after login, and keep passwords or another fallback until most active users have a passkey.

Tags
PasskeysWebAuthnAuthenticationWeb SecuritySaaS
Share this article