Guide
Passkeys and platform authenticators (Touch ID, Face ID, Windows Hello, security keys) let users sign in without typing a TOTP code. This host stores one exported credential in ACCESS_WEBAUTHN_SECRET and checks assertions on each login.
You can run WebAuthn-only flows when the deployment is configured for it, or keep TOTP as a backup—see TOTP setup and Environment variables.
rpId must equal the host users see in the address bar for that deployment (no scheme, no path). Use localhost for local HTTP dev; production must be served over HTTPS with a hostname that exactly matches the registered credential. Changing hostname or moving from preview to production URL usually requires registering again and updating env.
ACCESS_USERNAMEAfter registration, copy the exported JSON object into ACCESS_WEBAUTHN_SECRET as a single line. It includes Base64 fields such as credentialID and publicKey plus rpId and username for sanity checks.
On Vercel, paste via the dashboard or CLI; escape quotes if your shell requires it. Treat this blob like a password—anyone with it can mint assertions if they also know your password and can reach the login page.