Passkeys (WebAuthn)¶
WireBuddy supports passwordless authentication using Passkeys (WebAuthn/FIDO2).
Overview¶
Passkeys provide:
- 🔐 Passwordless Login: No password required
- 🛡️ Phishing Resistant: Cannot be stolen or phished
- 🚀 Fast Authentication: Touch ID, Face ID, or security key
- 🔑 Public Key Cryptography: No shared secrets
How Passkeys Work¶
sequenceDiagram
participant User
participant Browser
participant WireBuddy
participant Authenticator
User->>Browser: Click "Sign in with passkey"
Browser->>WireBuddy: Request challenge
WireBuddy->>Browser: Return challenge + allowed credentials
Browser->>Authenticator: Request signature
Authenticator->>User: Verify (fingerprint/PIN)
User->>Authenticator: Provide biometric
Authenticator->>Browser: Signed response
Browser->>WireBuddy: Submit signature
WireBuddy->>Browser: Authentication successful Supported Authenticators¶
Platform Authenticators¶
Built into your device:
- macOS/iOS: Touch ID, Face ID
- Windows: Windows Hello (fingerprint, face, PIN)
- Android: Fingerprint, face unlock, screen lock
Security Keys (Cross-Platform)¶
External hardware keys:
- YubiKey (5 series)
- Google Titan Security Key
- Feitian keys
- Any FIDO2-certified key
Browser Support¶
| Browser | Version | Support |
|---|---|---|
| Chrome | 109+ | ✅ Full |
| Edge | 109+ | ✅ Full |
| Safari | 16+ | ✅ Full |
| Firefox | 119+ | ✅ Full |
| Brave | 1.51+ | ✅ Full |
Setup and Usage¶
For Users¶
- Sign in with your existing method (password and optional MFA).
- Open Users and click Passkey Settings for your own account.
- Click Add Passkey.
- Complete the browser authenticator prompt (Touch ID, Face ID, Windows Hello, or a security key).
- Optional: enter a device name before registration.
Admin-driven Onboarding¶
Admins can enable passkey onboarding per user from the user management UI. The user is then prompted on next login to register a passkey.
Login with Passkey¶
- Open the login page.
- Click Sign in with Passkey (username is optional for discoverable credentials).
- Complete authenticator verification.
Fallback Behavior¶
Passkeys are optional in the current implementation. Password login remains available unless your deployment enforces additional policies outside of the passkey module.
Managing Passkeys¶
Available Actions¶
- List registered passkeys for the current user.
- Register additional passkeys (up to the configured per-user limit).
- Delete individual passkeys.
- Admin reset of all passkeys for a user.
Not Currently Available¶
- Passkey rename endpoint.
- Global passkey policy UI (attestation/user-verification toggles in settings).
- "Enforce passkeys" switch in the web settings UI.
Configuration¶
Passkey RP behavior is controlled by environment variables:
PASSKEY_RP_ID: Optional RP ID override. If unset, WireBuddy derives it from the request host.PASSKEY_RP_NAME: Optional RP display name (default:WireBuddy).MAX_PASSKEYS_PER_USER: Maximum passkeys per account (default:20).
Origin is validated from the incoming request scheme and host.
API Endpoints (Current)¶
POST /api/passkeys/register/startPOST /api/passkeys/register/finishPOST /api/passkeys/login/startPOST /api/passkeys/login/finishGET /api/passkeysDELETE /api/passkeys/{passkey_id}GET /api/passkeys/checkGET /api/passkeys/availablePOST /api/passkeys/reset/{user_id}(admin)GET /api/passkeys/user/{user_id}(admin)POST /api/passkeys/enable/{user_id}(admin)POST /api/passkeys/disable/{user_id}(admin)
Troubleshooting¶
Passkey Registration Fails¶
Problem: "Registration failed" error
Causes:
- Browser not supported: Update browser
- HTTPS required: Passkeys only work over HTTPS
- Domain mismatch: RP ID doesn't match domain
- Authenticator unavailable: Touch ID disabled, security key not inserted
Solutions:
- Use supported browser (Chrome 109+, Safari 16+, Firefox 119+)
- Access via HTTPS (not HTTP)
- Check authenticator is available and functional
Passkey Login Fails¶
Problem: "Authentication failed"
Causes:
- Wrong authenticator: Using different device/key than registered
- Passkey revoked: Admin deleted passkey
- Timeout: Didn't respond in time (default: 60 seconds)
- User verification failed: Wrong fingerprint/PIN
Solutions:
- Use the same authenticator you registered
- Check passkey still exists in profile
- Respond to prompt within 60 seconds
- Retry biometric or enter correct PIN
Touch ID Not Working (macOS)¶
Problem: Touch ID prompt doesn't appear
Solutions:
-
Check Touch ID is enabled:
-
Restart browser
-
Reset Touch ID (as last resort):
Security Key Not Detected¶
Problem: Browser doesn't detect security key
Solutions:
- Insert key properly: USB-A vs USB-C adapter
- Touch key button: Some keys require touch during detection
- Try different USB port
- Check key compatibility: FIDO2/WebAuthn certified key required
- Update key firmware (if available)
Best Practices¶
For Users¶
- Register at least two passkeys (daily device + backup key/device).
- Use clear device names at registration time.
- Keep a non-passkey fallback method available.
For Admins¶
- Enable onboarding per user and verify setup completion.
- Keep a recovery procedure for lost authenticators.
- Use reset/disable endpoints only when user recovery is needed.
Comparison: Passkeys vs Other Methods¶
| Feature | Passkeys | Password + MFA | Password Only |
|---|---|---|---|
| Security | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ |
| Convenience | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| Phishing Resistant | ✅ Yes | ⚠️ MFA can be phished | ❌ No |
| Password Reset | N/A | Needed | Needed |
| Offline | ✅ Works | ✅ Works (TOTP) | ✅ Works |
| Device Required | ✅ Yes | ⚠️ Phone (TOTP) | ❌ No |
Resources¶
Next Steps¶
- Authentication Guide - Overview of auth methods
- Security Overview - Complete security documentation
- User Management - Managing users