[wp-trac] [WordPress Trac] #64735: Add optional Passkey (WebAuthn/FIDO2) login support to WordPress

WordPress Trac noreply at wordpress.org
Thu Feb 26 10:06:12 UTC 2026


#64735: Add optional Passkey (WebAuthn/FIDO2) login support to WordPress
-------------------------+-----------------------------
 Reporter:  haozi        |      Owner:  (none)
     Type:  enhancement  |     Status:  new
 Priority:  normal       |  Milestone:  Awaiting Review
Component:  Security     |    Version:
 Severity:  normal       |   Keywords:
  Focuses:               |
-------------------------+-----------------------------
 WordPress core authentication is still password-first. I’m requesting
 optional Passkey (WebAuthn/FIDO2) support in core so site owners can offer
 phishing-resistant login without relying on a plugin for the security-
 critical wp-login.php path.

 Many users now have passkeys available via platform authenticators
 (Windows Hello / Touch ID / Android) and hardware security keys. Today,
 enabling passkeys in WordPress typically requires installing and trusting
 a third-party plugin that handles enrollment, verification, and login
 flow. A minimal core implementation (or at least a core WebAuthn service +
 hooks) would improve baseline security and provide a stable integration
 point for plugins.

 Passkeys are increasingly the default login UX across platforms
 (Apple/Google/Microsoft ecosystems) and provide strong protection against
 credential phishing, password reuse, and many account-takeover vectors.
 For WordPress—powering a large portion of the web—first-class support
 would materially improve baseline security and user experience.

 Proposed scope (MVP):

 1. Passkey registration in user profile

 * Add a “Passkeys” (or “Security keys / Passkeys”) section to /wp-
 admin/profile.php (and optionally user-edit.php)
 * Allow users to register one or more credentials
 * Allow basic management: list, rename/label, remove
 * Persist the minimum metadata needed for verification:

   * credential ID
   * public key
   * signature counter (sign count)
   * transports (optional)
   * created time / last used time (optional)

 2. Passkey login on wp-login.php

 * Add a secondary “Sign in with passkey” option on wp-login.php
 * Perform WebAuthn assertion and establish the normal WP auth session on
 success
 * Keep password login unchanged as fallback (at least initially)

 3. Extensibility hooks

 * Provide actions/filters so plugins can:

   * enforce passkey-only for certain roles/users
   * require passkey as step-up for sensitive actions
 (profile/email/password changes, etc.)
   * integrate with existing 2FA/security policy plugins without re-
 implementing WebAuthn verification

 Notes / constraints:

 * RP ID/origin handling must be correct (including multisite and
 subdirectory installs).
 * Avoid user enumeration (login responses should not reveal whether a
 username has passkeys).
 * Site migration where the RP ID changes will likely require re-
 enrollment; that’s acceptable but should be documented.
 * Rate limiting should be considered similar to existing login protections
 (or via hooks).

 Reference:

 * WebAuthn Level 2 spec:
 [https://www.w3.org/TR/webauthn-2/](https://www.w3.org/TR/webauthn-2/)

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/64735>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list