説明
Rapls Passkey は、パスキー (WebAuthn / FIDO2) で WordPress にログインできるようにするプラグインです。
- パスワード不要で、フィッシングに強いログイン
- 同じ端末でのパスキー (Touch ID / Windows Hello)
- ブラウザーが対応していれば、ブラウザー標準のパスキーフローで別の端末からログイン (スマートフォンで読み取り)。独自の QR 承認フローは Pro で利用できます。
- 任意のページに埋め込めるショートコードと Gutenberg ブロック (ログイン / パスキーの管理)
- 個々のパスキーの名前変更、一時停止、再開 — 一時的に手元にない端末を、認証情報を壊さずに遮断できます
- 管理者向けのサイト全体のパスキー一覧 (ユーザー -> パスキー)。所有者や名前で検索できます
- 2要素認証プラグイン (Wordfence Login Security、Two-Factor など) に対応。パスキーは第 2 要素として扱われ、より弱い代替のログイン手段にはサイトの 2要素認証が引き続き要求されます
- UI は完全に翻訳できます (原文は英語で、翻訳は translate.wordpress.org から提供されます)
ショートコード
任意の固定ページ、投稿、ウィジェットに埋め込めます。ブロックエディターでは「パスキーでログイン」「パスキーの管理」ブロックとしても使えます。
[rapls_passkey_login]— 未ログインの訪問者向けのパスキーログインボタン。redirect(成功後の遷移先 URL) とlabel(ボタンの文言) の属性に対応します。[rapls_passkey_register]— ログイン済みユーザーが自分のパスキーを登録・削除できる管理画面。
動作要件
- PHP 8.2 以降
- WordPress 6.0 以降
- HTTPS (localhost を除く)
Rapls Passkey Pro
ここまでの機能はすべて無料で、これからも無料のままです。Pro は、最初のパスキーを
登録したあとに来る部分、つまりサイト全体を移行することと、端末をなくしたときの
入り口を確保しておくことを受け持つ、独立したアドオンです。
- 別の端末からのログイン — パソコンでのログインをスマートフォンから承認できます。QR コードと 4 桁の確認コードを組み合わせるため、コードを転送されても別の場所では使えません
- パスワードによらない復旧手段 — 一回限りのリカバリーコードと、メールのマジックリンクによるログイン
- 権限グループ単位の展開 — 選んだ権限グループにパスキーを必須にし、猶予期間を設けたうえで、全員の移行が済んだらパスワードログインを無効にできます
- 状況に応じたステップアップ認証 — 見慣れない場所からパスワードでログインされたときに、あらためてパスキーを求めます
- 認証器のポリシー — FIDO Metadata Service による検証、AAGUID の許可リストと拒否リスト、信頼済み端末の管理
- 運用 — セキュリティ Webhook、導入状況レポート、マルチサイトのネットワーク設定、WP-CLI
買い切りでサブスクリプションはありません。1 年間の更新と 14 日間の返金保証付きです。
詳細と価格
外部サービス
本プラグインは既定では外部サービスへ何も送信しません。自分で有効にしない限りオフのままの任意の連携が 1 つだけ、第三者と通信します:
Google reCAPTCHA v3 — パスワードログインに reCAPTCHA を有効にした場合にのみ使います。有効なときは、訪問者のブラウザーが https://www.google.com/recaptcha/api.js を読み込み、本プラグインは得られたトークンとリクエスト元の IP アドレスを https://www.google.com/recaptcha/api/siteverify へ送信し、Google がそのリクエストを採点します。オフの間は何も送信しません。このサービスは Google が提供しており、利用には Google の利用規約とプライバシーポリシーが適用されます:
- 利用規約: https://policies.google.com/terms
- プライバシーポリシー: https://policies.google.com/privacy
ほかのホストとは通信しません。必要な公開サフィックスリスト (data/public_suffix_list.dat) は取得せずに同梱しており、パスキーの手続きはブラウザーとご自身のサイトの間だけで完結します。
プライバシー
認証データはご自身のサイト内に保存されます。
保存される情報:
- パスキーの認証情報 (公開鍵、認証情報 ID、署名カウンター、ラベル、日時) を保存する専用のデータベーステーブル。
- ユーザーメタに保存されるユーザーごとの WebAuthn ユーザーハンドルと、そのアカウントがハンドルを持つことを記録するオプションテーブルの 1 行。ハンドルは本人に関する情報を一切含みません。このバージョン以降に作成されたアカウントでは、アカウント ID とサイト固有の秘密の値から導出します。すでにランダムなハンドルを持つアカウントは、それをそのまま使い続けます。
- パスキーのイベント (登録、ログイン、削除) を、操作したユーザー、IP アドレス、日時とともに記録する任意の監査ログ。
保存期間と削除:
- パスキーの記録は、ユーザーまたは管理者が削除するまで残ります。ユーザーを削除すると、そのパスキーの記録も削除されます。
- WordPress 標準の個人データのエクスポートおよび消去ツールと連携するため、ユーザーのパスキーと監査データはエクスポートおよび消去のリクエストに含まれます。
- プラグインをアンインストールする (「プラグイン」画面から削除する) と、専用テーブルとオプションを削除します。
本プラグインは追跡のための Cookie を使いません。ログインの手続き中に、短時間だけ有効な機能上必要な Cookie (2要素認証の保留中のログインなど) を設定するだけで、数分で失効します。
スクリーンショット








ブロック
このプラグインは2個のブロックを提供します。
- Sign in with a passkey
- Manage passkeys
インストール
- プラグインを
wp-content/plugins/rapls-passkeyに配置します。 - 「プラグイン」画面から「Rapls Passkey」を有効化します。
- プロフィール画面からパスキーを登録します。
FAQ
-
無料版に制限はありますか ?
-
いいえ。パスキーでのログイン、登録、管理、ショートコードとブロック、管理者向けの
パスキー一覧、二要素認証プラグインとの連携は、すべて無料版に入っています。上限も
試用期間もライセンスキーもありません。Rapls Passkey Pro は、端末をまたぐ QR
ログイン、リカバリーコード、権限グループ単位の適用といった別の機能を追加する
独立したアドオンです。ここまでに挙げた機能を使うために、Pro をインストールする
必要はありません。 -
パスキーを失ってログインできなくなった場合は
-
パスキーと並行してパスワードログインも使えます。いつもどおりパスワードでログインし、プロフィール画面からパスキーを削除するか登録し直してください。
WP-CLI を使えば、サーバー側からパスキーを管理することもできます:
wp rapls-passkey list --user=admin wp rapls-passkey remove <id>緊急時は、次の行を wp-config.php に追加するとパスキーの必須化を一時的に無効にできます (復旧したら削除してください):
define( 'RAPLS_PASSKEY_BYPASS', true );
評価
このプラグインにはレビューがありません。
貢献者と開発者
変更履歴
0.13.70
- 修正: PHP 8.2 より古い環境で、フロントエンドを含むサイト全体が表示できなくなっていました。同梱している依存ライブラリが 8.2 を必要としており、Composer のプラットフォームチェックはオートローダーが読み込まれた瞬間に例外を投げます。それが起きるのは WordPress がプラグインを読み込んでいる最中で、そこには例外を受け止める仕組みがありません。このプラグインは先に PHP のバージョンを確認し、条件を満たさないときは管理画面に通知を出して自身の動作を見送るようになりました。サイトの他の部分はそのまま動きます。
Requires PHPヘッダーだけではこれを防げません。WordPress がこのヘッダーを読むのは有効化するときと更新を知らせるときだけなので、あとから PHP のバージョンを下げたサーバーや、Web サーバーより古い PHP で動く WP-CLI は、そのまま素通りしていました。
0.13.69
- Rapls Passkey Pro のパネルを、ページのスクロールに追従するサイドバーへ移しました。これまでは 1 カラムの最下部、監査ログの表よりも下という、誰もスクロールしない位置に置かれていました。あわせて、機能を並べるのではなくアドオンが何のためのものかを伝える内容に書き直し、プラグイン一覧の行に「設定」と「Go Pro」のリンクを追加し、導入状況の数値には差を埋める方法を添えました。画面上の機能は何も制限していません。readme にも Pro のセクションと FAQ を追加し、無料版に上限も試用期間もライセンスキーもないことを明記しました。
- WordPress.org のレビューを一度だけお願いするようになりました。1 週間使ったあと、実際にパスキーが登録されている場合にかぎり、このプラグイン自身の 2 つの画面に依頼の通知を表示します。閉じるボタンも含め、どのボタンを押してもそれで完了です。rapls_passkey/show_review_prompt で通知そのものを無効にできます。管理画面の他の場所に出ることはなく、一度消えたら二度と表示されません。
- 訂正: readme に日本語翻訳を同梱していると書いていましたが、0.13.62 以降は事実ではありません。翻訳は translate.wordpress.org から提供されます。
0.13.68
- プラグインディレクトリの掲載用スクリーンショットと、それを説明する readme の節を追加しました。プラグインに変更はありません。
0.13.67
- テストのみです。ただし、見つける価値のあるものが 1 つありました。ほかのユーザーのパスキー登録が既定で有効であることを、何も検証していませんでした。登録テストのスタブがフィルターに自分で答えていたため、配布物側の既定値が一度も読まれておらず、既定をオフに戻してもすべてのテストが通ってしまう状態でした。現在は既定値を 2 か所の呼び出し箇所の両方で検証し、この機能を有料アドオンに結び付ける記述がソースにないことも確認します。
0.13.66
- ほかのユーザーのパスキーを登録する機能は、既定で有効です。実装済みでありながら無効になっており、Pro アドオンがそれを有効にしていました。これは組み込みの機能をライセンスに依存させることになり、ここでは認められません。実際の制限は一貫して権限の確認であり、そこは変わっていません。そのユーザーをすでに編集でき、したがってパスワードを再設定して本人としてログインできる人だけが、代理で登録できます。Pro の設定は、この機能をオフにするためだけのものになりました。
- 2要素認証の画面は、2要素認証プロバイダーが出力するマークアップを、その画面に必要なフォーム部品の範囲に絞り込みます。同梱の 2 つのアダプターは 1 バイトも影響を受けません。プロバイダーが出力するインライン JavaScript は取り除かれるため、必要な場合はエンキューしてください。
- パッケージから日本語カタログと
load_plugin_textdomain()を削除しました。WordPress.org は translate.wordpress.org からすべてのロケールの翻訳を生成し、必要に応じて読み込みます。同梱したコピーはそれを覆い隠すだけです。 - Composer が第三者パッケージの中に配置するテスト専用のディレクトリ 2 つ (
doctrine/deprecations、symfony/clock) を除外しました。
0.13.65
- 配布パッケージに対する WordPress Plugin Check の警告を、残らず解消しました。
$_SERVER['REQUEST_METHOD']、クエリ文字列から受け取るredirect_to、「認識済みの端末」の Cookie は、後から検証するのではなく受け取る時点でスラッシュ除去とサニタイズを行います。アンインストールスクリプトのループ変数 2 つには接頭辞を付けました。グローバルスコープで実行されるファイルはグローバル変数を定義するためです。また、アンインストール時の DROP TABLE の除外指定が、誤ったルール名を指していました。 composer.jsonをパッケージに再び同梱しました。WordPress.org の検査はvendor/ディレクトリがある場合にこれを求めており、中身を示すマニフェストでもあります。composer.lockは同梱しません。パッケージを読む方への注意:vendor/はビルド時にすでに名前空間を前置き済みのため、インストール済みのコピー内でcomposer installを実行しないでください。- 機能面の変更はありません。
0.13.64
- Readme のみ :
Tested up toまでのバージョンでテスト済み。これはパッチリリース (7.0.2) と指定されていました。 WordPress.org の自動スキャンではメジャーバージョンのみが要求されるため、この指定によりアップロードが拒否されました。現在は7.0と表示されていますが、プラグイン自体に変更はなく、7.0.2でもテスト済みです。
0.13.63
- 配布パッケージのすべてのファイルで、直接アクセスの防止が欠けていました。本プラグインは各ファイルを
if (! defined('ABSPATH'))で保護していますが、ビルドがこれをif (! \defined('ABSPATH'))に書き換えます。これは WordPress の Plugin Check ツールが認識しない形です。そのためリポジトリ上は正しく見えるのに、配布されたすべてのファイルがツールからは無防備に見えていました。現在は、ビルドを経ても残る形で記述しています。 - 配布ファイル内のコーディング規約の除外指定が、誤った行を指していました。対象の行の末尾に書かれていましたが、ビルドは行末のコメントを次の行へ移します。そのため、本来対象とすべき行の 1 つ後ろの行を抑止していました。現在はすべて、対象の行の上に書いています。
- この 2 つが隠していた問題を修正します: エスケープされていない例外メッセージ、欠けていた translators コメント、誤ったルール名を指定していたデータベース呼び出しの除外指定、そして CSV 出力のファイルハンドルです。動作は変わりません。監査ログの CSV、2要素認証との連携、パスキーの上限は、いずれも従来どおり動作します。
- そのほか:
Plugin URIがこのプラグインの WordPress.org ページを指していましたが、プラグインヘッダーの仕様では認められていません。またAuthor URIが欠けていました。readme の外部サービスに関する開示 (任意の reCAPTCHA) を独立した節にし、0.13.46 より前のリリースは changelog.txt へ移しました。
0.13.62
- プラグインの変更はありません。リリース用ツールのみ: 再ビルドの検査が、異なる 2 つのアーカイブのチェックサムを並べて「一致」と報告していました。一致するのは、その中のすべてのファイルです。
0.13.61
- プラグインの変更はありません。リリース用ツールのみ: 再ビルドの検査が、ファイル内の 2 つの項目ではなく 2 つのファイル全体を比較対象から除外していました。
0.13.60
- プラグインの変更はありません。リリース用ツールのみ: 再ビルドの検査をリリースごとに CI で実行し、2 つのパッケージをファイルツリーとして比較します。
0.13.59
- プラグインの変更はありません。リリース用ツールのみ: 検証バンドルが主張する内容を、より狭く正確なものにし、スクリプトで検査するようにしました。
0.13.58
- プラグインの変更はありません。リリース用ツールのみ: 審査用に提出するソースから、それ自身を再ビルドできるようにしました。
0.13.56
- プラグインの変更はありません。リリース用ツールのみ: バンドルが、その記録の対象であるディレクトリ自体に記録を書き込まないようにしました。
0.13.55
- プラグインの変更はありません。リリース用ツールのみ: 同梱する依存ツリーを、記録がすでにある場合だけでなく毎回のビルドで検証します。
0.13.54
- プラグインの変更はありません。リリース用ツールのみ: パッケージ化の前に、同梱する依存ツリーを記録済みのマニフェストと 1 ファイルずつ照合します。
0.13.53
- 監査ログの CSV 出力: 先頭の空白に隠れた数式も無害化するようにしました。検査が先頭の 1 バイトしか見ていなかったため、
=、+、-、@の前に空白、タブ、ノーブレークスペース、バイトオーダーマークが付いたユーザー名は、無防備なままファイルに書き出されていました。表計算ソフトは、セルが数式かどうかを判定する前にその空白を読み飛ばします。 - 任意の reCAPTCHA 連携について、readme が Google の利用規約とプライバシーポリシーへリンクし、通信先のエンドポイントを明記しました。
0.13.52
- プラグインの変更はありません。リリース用ツールのみ: リリースを組み立てる前に、実行内のすべてのジョブが成功していることを CI が要求します。
0.13.50
- プラグインの変更はありません。リリース用ツールのみ: CI がすべてのジョブの結果を証明し、リリース用ツールがそれを検証します。
0.13.49
- プラグインの変更はありません。リリース用ツールとドキュメントの修正のみです。
0.13.48
- プラグインの変更はありません。リリース用ツールのみ: エンドツーエンドのテスト手順と、記録される CI の来歴を修正しました。
0.13.47
- プラグインの変更はありません。リリース用ツールのみ: 同梱のテスト手順と、実データベースを使うテスト環境を修正しました。
0.13.46
- パッケージの修正: これまでのパッケージには、本来同梱すべきでない開発用ファイルが入っていました — テストスイート、ビルドスクリプト、CI 設定、Composer のマニフェストです。動作に害はありませんが、プラグインの ZIP に入るべきものではありません。このリリースからは実行に必要なファイルだけを含み、ビルドが完成したパッケージを検査します。
0.13.45 以前のリリースの変更履歴は changelog.txt をご覧ください。
