Replies: 5 comments 9 replies
|
I haven't implemented a passkey auth flow before, but I have used them to sign into both native apps and websites. When I come unauthenticated to an app or site that I've registered a passkey with I'm prompted to use the passkey in my password manager. Unsure whether that's password manager or site/app initiated - I don't see an API here to determine whether the current unauthenticated user has a passkey available so as to determine whether to initiate the flow though. |
|
Holy s*** it really happened. Great work! |
|
Is this supported on local supabase instances for testing? I tried config.toml and tried to work out the management API's without success. |
|
Thank you so much for implementing passkeys! So far it works great on my local dev and my live app which uses cloudflare and sveltekit for the front end. One question, |
|
Really excited about passkey support landing... got it working end-to-end on our app already! Ran into one snag specifically when the provider is Dashlane rather than a native authenticator, figured it's worth flagging: Passkey registration fails with a non-native provider (Dashlane) — server rejects with "illegal base64 data" Setup: self-hosted Supabase Auth, Repro:
Result: Registration fails client-side with a generic error. Server-side auth logs show: The Environment: Brave 1.91.178 (Chromium 149.0.7827.196, arm64) on macOS 26.5 (Build 25F71). Dashlane extension version not captured. Question: Is this a known interop gap between Dashlane's virtual/software passkey provider and the server-side WebAuthn verification (e.g. a COSE vs. DER key encoding mismatch, or a serialization edge case in the client's |
Uh oh!
There was an error while loading. Please reload this page.
We're excited to announce the beta release of Passkeys for Supabase Auth — a passwordless, phishing-resistant credential built on the WebAuthn standard.
With passkeys, users sign in with biometrics (Face ID, Touch ID, Windows Hello), a device PIN, or a hardware security key. Supabase Auth stores the public key needed for verification; private key material remains managed by the user’s authenticator or credential provider.
How does it work?
Each passkey enrollment or sign-in is a WebAuthn ceremony with three steps:
navigator.credentials.create()(register) ornavigator.credentials.get()(sign in), prompting the user to approve with biometrics or a security key.Supabase Auth uses discoverable credentials, so users don't need to type an email or username — the authenticator resolves the account from the credential it already stores.
Enable passkeys in the Dashboard
Open Authentication → Passkeys in the Dashboard, toggle on Enable Passkey authentication, and fill in your WebAuthn relying party details:
example.com). No scheme, port, or path.https://example.com,https://app.example.com).The Dashboard pre-fills these from your project's Site URL and project name.
Passkeys can also be configured via the CLI and the Management API.
Use it from your app
Note
The Passkeys API is currently experimental and requires an explicit opt-in as the API may change without notice during the beta phase.
Opt in to the experimental API when creating the client:
Register a passkey for an authenticated user — typically from a security settings page or right after sign-up:
Sign in with a passkey — no email or phone needed upfront; the authenticator picks the account:
Manage passkeys — list, rename, and delete from the current user's account:
What we'd like to know from you
Drop your feedback in this thread or open an issue.
Related links
auth.registerPasskeyauth.signInWithPasskeyauth.passkey(two-step API)auth.admin.passkey(server-side)All reactions