Title: Rapls Passkey – Passwordless Login with WebAuthn
Author: rapls
Published: <strong>11. kolovoza 2026.</strong>
Last modified: 14. rujna 2026.

---

Pretraga dodataka

![](https://ps.w.org/rapls-passkey/assets/banner-772x250.png?rev=3642248)

![](https://ps.w.org/rapls-passkey/assets/icon-256x256.png?rev=3642248)

# Rapls Passkey – Passwordless Login with WebAuthn

 Od [rapls](https://profiles.wordpress.org/rapls/)

[Preuzmi](https://downloads.wordpress.org/plugin/rapls-passkey.0.13.77.zip)

 * [Detalji](https://hr.wordpress.org/plugins/rapls-passkey/#description)
 * [Recenzije](https://hr.wordpress.org/plugins/rapls-passkey/#reviews)
 *  [Instalacija](https://hr.wordpress.org/plugins/rapls-passkey/#installation)
 * [Razvoj](https://hr.wordpress.org/plugins/rapls-passkey/#developers)

 [Podrška](https://wordpress.org/support/plugin/rapls-passkey/)

## Opis

Rapls Passkey adds passkey sign-in to WordPress. Touch ID, Windows Hello, Face
 
ID or a security key takes the place of the password, and your server never holds
a shared secret — only a public key, which is useless to anyone who steals it.

A video walkthrough (in Japanese):

It is built to run where most WordPress sites actually run:

 * **No PHP extension to install.** Nothing beyond what WordPress itself already
   needs. In particular `gmp` is not required, so there is nothing to ask your shared
   host for and nothing that stops working when the server’s PHP is upgraded.
 * **Nothing leaves your site.** The passkey ceremony happens between the browser
   and your own server. No account, no API key, no third-party service in the login
   path.
 * **Passwords keep working.** Password login is never switched off in the free 
   plugin. Nobody gets locked out while a site moves across.
 * **Japanese UI included.** Fully translated, alongside the English source.

#### What the free plugin does

 * Passwordless, phishing-resistant sign-in (WebAuthn / FIDO2)
 * Same-device passkeys (Touch ID / Windows Hello / Face ID)
 * Cross-device sign-in using the browser’s native passkey flow when the browser
   offers it (scan with your phone). A custom QR approval flow is available in Pro.
 * Shortcodes and Gutenberg blocks (login / passkey management) you can embed on
   any page
 * Rename, suspend and resume individual passkeys — a device that is temporarily
   out of reach can be cut off without destroying the credential
 * A site-wide passkey list for administrators (Users -> Passkeys), searchable by
   owner or name
 * Works with two-factor plugins (Wordfence Login Security, Two-Factor, …): a passkey
   counts as the second factor, while weaker alternative logins must still pass 
   the site’s 2FA
 * An audit log of registrations, sign-ins and removals, exportable as CSV
 * WP-CLI commands, a first-run configuration check, and an emergency bypass constant
 * Fully translatable UI (English source; translations come from translate.wordpress.
   org)

#### Shortcodes

Embed them in any page, post, or widget. In the block editor they are also available
as the “Sign in with a passkey” and “Manage passkeys” blocks.

 * `[rapls_passkey_login]` — a passkey sign-in button for logged-out visitors. Supports
   the `redirect` (URL to go to after success) and `label` (button text) attributes.
 * `[rapls_passkey_register]` — a management UI where logged-in users can register
   and remove their own passkeys.

#### Requirements

 * WordPress 6.0 or later
 * PHP 8.2 or later
 * HTTPS, except on localhost — browsers refuse WebAuthn without it

No PHP extension beyond WordPress’s own requirements.

#### Rapls Passkey Pro

Everything above is free, and stays free. Pro is a separate add-on for the part

that comes after the first passkey: moving a whole site across, and keeping a way
in when a device goes missing.

 * **Sign in from another device** — approve a login on your computer from your 
   phone, with a QR code and a four-digit confirmation code so a relayed code cannot
   be used elsewhere
 * **A way back in that is not a password** — one-time recovery codes and email 
   magic-link sign-in
 * **Roll out by role** — require passkeys for the roles you choose, with a grace
   period, then turn password login off once everyone is across
 * **Adaptive step-up** — ask for a passkey again after a password sign-in from 
   somewhere unfamiliar
 * **Authenticator policy** — FIDO Metadata Service checks, AAGUID allow and deny
   lists, trusted-device management
 * **Operations** — security webhooks, adoption reports, multisite network settings,
   WP-CLI

One-time purchase, no subscription, with a year of updates and a 14-day refund.

[Details and pricing](https://raplsworks.com/rapls-passkey-pro/)

### External services

This plugin sends nothing to any external service by default. One optional
 integration,
off unless you turn it on, contacts a third party:

**Google reCAPTCHA v3** — used only when you enable reCAPTCHA for password
 logins.
When it is on, the visitor’s browser loads https://www.google.com/recaptcha/api.
js, and the plugin sends the resulting token together with the request IP address
to https://www.google.com/recaptcha/api/siteverify so that Google can score the 
request. Nothing is sent while the option is off. This service is provided by Google
and its use is governed by Google’s terms and privacy policy:

 * Terms of Service: https://policies.google.com/terms
 * Privacy Policy: https://policies.google.com/privacy

No other host is contacted. The plugin bundles the public suffix list it needs
 (`
data/public_suffix_list.dat`) rather than fetching it, and passkey ceremonies happen
between the browser and your own site.

### Privacy

Authentication data is stored on your own site.

What is stored:

 * Passkey credential records (public key, credential ID, sign counter, a label 
   and timestamps) in a custom database table.
 * A per-user WebAuthn user handle in user meta, plus one row in the options table
   recording that the account has one. The handle carries nothing about the person:
   for accounts created from this version it is derived from the account id and 
   a site secret, and accounts that already had a random handle keep it.
 * An optional audit log of passkey events (registration, sign-in, removal) with
   the acting user, IP address and timestamp.

Retention and removal:

 * Passkey records remain until the user or an administrator deletes them; deleting
   a user removes their passkey records.
 * The plugin integrates with WordPress’s built-in personal-data export and erase
   tools, so a user’s passkey and audit data are included in export/erase requests.
 * Uninstalling the plugin (delete from the Plugins screen) drops its custom table
   and options.

This plugin does not use cookies for tracking. It sets only short-lived, functional
cookies during a login ceremony (for example the pending second-factor login), which
expire within minutes.

## Snimke zaslona

[⌊Sign in with a passkey from the normal WordPress login screen.⌉⌊Sign in with a
passkey from the normal WordPress login screen.⌉[

Sign in with a passkey from the normal WordPress login screen.

[⌊The browser offers the passkeys saved for this site.⌉⌊The browser offers the passkeys
saved for this site.⌉[

The browser offers the passkeys saved for this site.

[⌊Your registered passkeys: rename, suspend or delete each one.⌉⌊Your registered
passkeys: rename, suspend or delete each one.⌉[

Your registered passkeys: rename, suspend or delete each one.

[⌊Registering a passkey from your profile screen.⌉⌊Registering a passkey from your
profile screen.⌉[

Registering a passkey from your profile screen.

[⌊Touch ID confirms before the passkey is saved.⌉⌊Touch ID confirms before the passkey
is saved.⌉[

Touch ID confirms before the passkey is saved.

[⌊Choose where the passkey is stored.⌉⌊Choose where the passkey is stored.⌉[

Choose where the passkey is stored.

[⌊The first-run check: HTTPS, the relying-party ID, and the WebAuthn library.⌉⌊The
first-run check: HTTPS, the relying-party ID, and the WebAuthn library.⌉[

The first-run check: HTTPS, the relying-party ID, and the WebAuthn library.

[⌊Every registration, sign-in and removal, exportable as CSV.⌉⌊Every registration,
sign-in and removal, exportable as CSV.⌉[

Every registration, sign-in and removal, exportable as CSV.

## Blokovi

Ovaj dodatak omogućava 2 bloka.

 *   Sign in with a passkey
 *   Manage passkeys

## Instalacija

 1. Place the plugin in `wp-content/plugins/rapls-passkey`.
 2. Activate “Rapls Passkey” from the Plugins screen.
 3. Register a passkey from your profile screen.

Nothing else is required: no account, no API key, no configuration before the first
passkey. The settings screen shows a first-run check (HTTPS, the relying-party ID,
the WebAuthn library) so you can see the site is ready.

## Pitanja i odgovori

### Does this need any PHP extensions?

No. It runs on what WordPress itself already requires. Some WebAuthn plugins
 need`
gmp` compiled into PHP, which is not present on every shared host and can disappear
when the host upgrades PHP; this plugin does not use it.

### Does it work on shared hosting?

Yes. There is no extension to install, no persistent process, and nothing
 written
outside the plugin’s own table and options.

### Which browsers and devices work?

Any current browser with a built-in authenticator — Touch ID, Windows Hello,
 Face
ID — or a FIDO2 security key. If the machine in front of you has no passkey for 
the site, the browser’s own cross-device flow lets you scan with your phone instead.

### Is the free version limited?

No. Passkey sign-in, registration, management, the shortcodes and blocks, the
 administrator’s
passkey list and the two-factor integrations are all in the free plugin, without
a cap, a trial period or a licence key. Rapls Passkey Pro is a separate add-on that
adds different features — cross-device QR login, recovery codes, enforcement by 
role — and installing it is not required for anything described above to work.

### Does it work with my security plugin?

It is built to sit alongside them rather than replace them. Plugins that change

the login URL or add an image CAPTCHA keep doing so; the passkey button appears 
on whatever login screen your site actually serves. With Wordfence Login Security
or Two-Factor, a passkey satisfies the second factor, and a weaker alternative login
still has to pass the site’s own 2FA.

### Is the plugin available in Japanese?

Yes. The Japanese translation is complete, and WordPress.org serves it as a
 language
pack — no bundled catalogue, so it updates independently of the plugin.

### What if I lose my passkey and cannot sign in?

Password login still works alongside passkeys, so sign in with your password as 
usual and then remove or re-register passkeys from your profile screen.

You can also manage passkeys from the server with WP-CLI:

    ```
    wp rapls-passkey list --user=admin
    wp rapls-passkey remove <id>
    ```

In an emergency, add the following to wp-config.php. It switches off every passkey
requirement and second-factor check this plugin applies; remove it once you have
recovered:

    ```
    define( 'RAPLS_PASSKEY_BYPASS', true );
    ```

### Will passkeys made on a staging site work on the live site?

Not by default. A passkey is bound to the domain it was registered on, and that

binding is kept inside the authenticator, not in the database — so moving the database
to production does not carry it across. A passkey registered on staging.example.
com is not offered on example.com.

Either register again on the live site and treat staging passkeys as disposable,

or have both sites use the parent domain before anyone registers:

    ```
    add_filter( 'rapls_passkey_rp_id', function () {
        return 'example.com';
    } );
    ```

With the second, passkeys registered on staging keep working once the database
 
moves to production, including any you did not mean to keep. Passkeys made on localhost
only ever work on localhost. The setup screen shows the relying-party ID in use,
so this can be settled before the first passkey is registered.

## Recenzije

![](https://secure.gravatar.com/avatar/ff862ed2960ce3ae5a8e2fbd932c0c24dac888228b6eb116f6d75a5d81291dab?
s=60&d=retro&r=g)

### 󠀁[わりと簡単にパスキーに対応できる](https://wordpress.org/support/topic/%e3%82%8f%e3%82%8a%e3%81%a8%e7%b0%a1%e5%8d%98%e3%81%ab%e3%83%91%e3%82%b9%e3%82%ad%e3%83%bc%e3%81%ab%e5%af%be%e5%bf%9c%e3%81%a7%e3%81%8d%e3%82%8b/)󠁿

 [npowey](https://profiles.wordpress.org/npowey/) 28. kolovoza 2026.

設定が簡単で、すぐにパスキーでログインできました。パスワード入力の手間がなくなり、
とても便利です。

![](https://secure.gravatar.com/avatar/680b9e0dd4f6c2201de27866d9a2c4c0a3764fba051424dc1c3bfb11d5a21f2b?
s=60&d=retro&r=g)

### 󠀁[Easy Passkey Login](https://wordpress.org/support/topic/easy-passkey-login/)󠁿

 [oops2](https://profiles.wordpress.org/oops2/) 21. kolovoza 2026.

Easy to set up and a convenient way to add passkey login to WordPress.

 [ Pročitajte sve 2 recenzije ](https://wordpress.org/support/plugin/rapls-passkey/reviews/)

## Suradnici i Programeri

“Rapls Passkey – Passwordless Login with WebAuthn” je softver otvorenog koda. Sljedeće
osobe su doprinijele ovom dodatku.

Suradnici

 *   [ rapls ](https://profiles.wordpress.org/rapls/)

“Rapls Passkey – Passwordless Login with WebAuthn” je preveden na 1 jezik. Zahvala
[prevoditeljima](https://translate.wordpress.org/projects/wp-plugins/rapls-passkey/contributors)
za njihov doprinos.

[Prevedite “Rapls Passkey – Passwordless Login with WebAuthn” na svoj jezik.](https://translate.wordpress.org/projects/wp-plugins/rapls-passkey)

### Zainteresirani ste za razvoj?

[Pregledajte kôd](https://plugins.trac.wordpress.org/browser/rapls-passkey/), pogledajte
[SVN spremište](https://plugins.svn.wordpress.org/rapls-passkey/)ili se pretplatite
na [dnevnik razvoja](https://plugins.trac.wordpress.org/log/rapls-passkey/) od [RSS](https://plugins.trac.wordpress.org/log/rapls-passkey/?limit=100&mode=stop_on_copy&format=rss).

## Dnevnik promjena

#### 0.13.77

 * The short description now leads with what decides whether a site can try this
   safely: your password still works, so a lost device does not lock you out, and
   the Japanese interface is fully translated.
 * New FAQ entry: why passkeys registered on a staging site do not work on the live
   one, and the two ways to handle it. The lost-passkey entry now says what the 
   emergency constant actually switches off.
 * A video walkthrough is linked from the description.
 * The changelog had lost 0.13.46–0.13.62. When 0.13.71 trimmed this readme it deleted
   those entries and pointed to changelog.txt for them, but they were never added
   there. They are restored from history, and this readme now carries only the latest
   releases.
 * No functional change.

#### 0.13.76

 * Packaging fix: in the released package, and only there, every certificate signature
   check failed. Building this plugin rewrites the bundled libraries into a private
   namespace so that another plugin carrying the same library cannot collide with
   ours, and that step rewrites any text shaped like a namespaced class name. One
   piece of text has that shape without being a class name: `ymdHis\Z`, the format
   a certificate’s validity dates are written in. Certificates were then rewritten
   with those dates expanded into something else, the bytes stopped matching what
   the certificate authority had signed, and every certificate was reported as not
   verifying. Sign-in and registration verify no certificates, so passkeys themselves
   were unaffected; the Pro add-on’s FIDO metadata refresh does, and it reported“
   Certificate chain does not validate to a trusted FIDO root” while naming trust
   anchors that had been correct all along.
 * The check that would have caught this was being skipped. Running the suite against
   the built package excused it as needing the bundled libraries under their original
   names — it does not; it reaches them only through the plugin’s own code. It runs
   against the package now, and the packaging step’s rewrites are exercised directly
   as well, so a string it should not touch failing to survive is a test failure
   rather than a release.

#### 0.13.75

 * Translation only: the Japanese catalogue now follows the WordPress Japanese style
   guide where it had drifted from it. A half-width number takes no space around
   it in Japanese, so “0 は無制限です” becomes “0は無制限です”; and the glossary
   settles ブラウザー, サーバー and ユーザー over the shorter forms the 長音 rule
   would otherwise produce. 293 strings, no code change.
 * tests/smoke-ja-style.php now checks both, and one more thing: translate.wordpress.
   org warns when a translation opens in a different letter case from the original.
   Japanese word order produces that on its own — “Enable reCAPTCHA” becomes “reCAPTCHA
   を有効にする” — so it is worth catching here rather than at upload time.

#### 0.13.74

 * Passkey sign-in no longer depends on the object cache. A sign-in is two requests—
   the browser asks for a challenge, then sends back the answer — and the challenge
   was kept in a transient, which WordPress stores in the object cache whenever 
   one is installed. WordPress then assumes the cache will hand the second request
   what the first one wrote, and that is up to the host, not the plugin: separate
   PHP-FPM instances and separate servers do not share an APCu segment, and any 
   cache can evict an entry or lose the counter a drop-in namespaces its keys by.
   Seen on a live site, the challenge was not what came back seconds later, and 
   a correct passkey was refused as expired — which is why the same passkey worked,
   then did not, then worked again. Challenges and parked two-factor logins now 
   go straight to the database.
 * A challenge can no longer be spent twice on such a host. Single use was enforced
   with an atomic add on the object cache, which decides a winner only among callers
   the cache actually serializes; where it does not, two requests could both be 
   told they had won. It is now decided by the database.
 * Site Health reports an object cache that does not return what an earlier request
   wrote. It affects far more than this plugin, and nothing else says so.

For the change history of 0.13.72 and earlier releases, see changelog.txt.

## Meta

 *  Version **0.13.77**
 *  Zadnje ažuriranje **prije 5 dana**
 *  Aktivnih instalacija **Manje od 10**
 *  WordPress inačica ** 6.0 ili viša **
 *  Testirano do **7.1.1**
 *  PHP inačica ** 8.2 ili viša **
 *  Jezici
 * [English (US)](https://wordpress.org/plugins/rapls-passkey/) i [Japanese](https://ja.wordpress.org/plugins/rapls-passkey/).
 *  [Prevedite na vaš jezik](https://translate.wordpress.org/projects/wp-plugins/rapls-passkey)
 * Oznaka
 * [login](https://hr.wordpress.org/plugins/tags/login/)[passkey](https://hr.wordpress.org/plugins/tags/passkey/)
   [passwordless](https://hr.wordpress.org/plugins/tags/passwordless/)[two factor](https://hr.wordpress.org/plugins/tags/two-factor/)
   [webauthn](https://hr.wordpress.org/plugins/tags/webauthn/)
 *  [Napredni pogled](https://hr.wordpress.org/plugins/rapls-passkey/advanced/)

## Ocjena

 5 out of 5 stars.

 *  [  2 5-star reviews     ](https://wordpress.org/support/plugin/rapls-passkey/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/rapls-passkey/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/rapls-passkey/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/rapls-passkey/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/rapls-passkey/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/rapls-passkey/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/rapls-passkey/reviews/)

## Suradnici

 *   [ rapls ](https://profiles.wordpress.org/rapls/)

## Podrška

Želite nešto reći? Potrebna vam je pomoć?

 [Pregledaj forum za podršku](https://wordpress.org/support/plugin/rapls-passkey/)