2026年6月1日
2026年6月1日
WordPressのQRコードログイン:パスキーでスマホを使ってログインする方法と注意点
WordPress で「QR コードでログインしたい」と考えたとき、2026年11月時点で現実的なのは、パスキー(WebAuthn)の別の端末でログインする機能を使う方法です。パソコンのブラウザに QR コードが表示され、それをスマートフォンで読み取り、スマートフォンの画面ロック(指紋・顔・PIN)で確認するとパソコン側でログインできます。この記事では、仕組み、WordPress での設定の流れ、サイト独自の QR ログインを作る場合の危険、締め出されたときの戻り方を説明します。
「QRコードログイン」には2つの方式がある
同じ「QR コードでログイン」でも、中身は大きく2つに分かれます。
| 方式 | QR コードを出すのは | 安全性の考え方 |
|---|---|---|
| パスキーのクロスデバイス認証 | ブラウザ・OS(WebAuthn の標準機能) | 鍵はサイトのドメインに結び付き、スマートフォンとパソコンが近くにあることも確認される |
| サイト独自の QR ログイン | サイト(プラグインや自作コード) | 実装しだい。QR コードを第三者に中継されると、その人の画面がログイン状態になるおそれがある |
この記事が勧めるのは前者です。WordPress 側はパスキーに対応したプラグインを入れるだけで、QR コードの表示や読み取り後の処理はブラウザと OS が受け持ちます。
古い「WP QR Code Login」系プラグインは使わない
以前の版のこの記事では「WP QR Code Login」というプラグインを入れる手順を紹介していましたが、WordPress.org でこのスラッグ(wp-qr-code-login)で公開されているプラグインは、2015年6月を最後に更新されておらず、動作確認も WordPress 4.2 までです(2026年11月時点)。保守されていない認証プラグインは、脆弱性が見つかっても直りません。使わないでください。
また、login_url フィルターでログイン URL に ?qrcode=true のようなクエリを付けても、URL の文字列が変わるだけで QR コードは表示されません。
パスキーのクロスデバイス認証の仕組み
パスキーは、パスワードの代わりに端末の中の秘密鍵で署名してログインする仕組みです。サイトには公開鍵だけが保存されます。クロスデバイス認証(FIDO の仕様では CTAP の「hybrid」という方式)は、パスキーを持っているスマートフォンを、パソコンでのログインに使えるようにするものです。流れは次のとおりです。
- パソコンのブラウザでログインを始めると、ブラウザ(または OS)がパスキーの選択画面を出す
- 「別の端末」「スマートフォンやタブレット」といった選択肢を選ぶと QR コードが表示される
- スマートフォンのカメラで QR コードを読み取る
- パソコンとスマートフォンが Bluetooth で互いに近くにあることを確かめる(ペアリングは不要)
- スマートフォンの画面ロックで本人確認をすると、署名がパソコンのブラウザに渡り、サイトにログインできる
Bluetooth は近くにあることの確認に使われ、署名そのものの安全性は Bluetooth に依存しません。近さを確認するため、QR コードの画像だけを遠くの人に送っても使えないのが、サイト独自の QR ログインとの大きな違いです。
使うための条件は次のとおりです。
- パソコンとスマートフォンの両方で Bluetooth をオンにしておく
- スマートフォンに、そのサイトのパスキーが登録されている(パソコン側には不要)
- サイトが HTTPS で公開されている(WebAuthn はセキュアな接続でしか動かない)
選択肢のボタン名は、ブラウザ・OS・パスワード管理ツールの種類やバージョンで変わります。利用者向けの案内には「ブラウザの画面で、スマートフォンを使う選択肢を選ぶ」のように、具体的なボタン名に頼らない書き方をしておくと古くなりにくくなります。
WordPressで使えるようにする手順
手順1:バックアップと非常口を用意する
認証まわりのプラグインは、設定を誤ると管理者がログインできなくなります。始める前に、サイトのファイルとデータベースのバックアップを取り、次の手段が使えることを確かめておきます。
- FTP / SFTP かサーバーのファイルマネージャーで
wp-content/plugins/を開ける - 可能なら WP-CLI が使える
手順2:パスキー対応プラグインを入れる
WordPress 本体には、パスキーでログインする機能は標準では入っていません(2026年11月時点)。WordPress.org で公開されている主な選択肢は次のとおりです。
| プラグイン | 使い方 |
|---|---|
| WP-WebAuthn | WebAuthn によるログインを追加する。設定によってはパスワードなしでのログインも選べる |
| Secure Passkeys | パスキーによるパスワードなしのログインを追加する |
| Two Factor + WebAuthn Provider for Two Factor | パスワードを残したうえで、2要素目にパスキーやセキュリティキーを使う |
どれを選ぶ場合も、プラグインのページで最終更新日、検証済みの WordPress のバージョン、サポートフォーラムの状況を確認し、ステージング環境で試してから本番に入れてください。クロスデバイス認証は WebAuthn の標準機能なので、パスキーに対応したプラグインであれば、QR コードのための特別な設定は通常いりません。
手順3:スマートフォンにパスキーを登録する
管理者自身で、まず1人分を登録して流れを確かめます。
- スマートフォンのブラウザで WordPress にログインし、プロフィール画面(またはプラグインが用意する画面)からパスキーを登録する
- または、パソコンで登録を始め、ブラウザの画面でスマートフォンを使う選択肢を選び、表示された QR コードをスマートフォンで読み取って登録する
スマートフォンをなくしたときに備えて、パソコンの生体認証や別のセキュリティキーなど、2つ以上の認証器を登録しておきます。Two Factor を使う場合は、バックアップコードも発行して安全な場所に保管します。
手順4:パソコンからQRコードでログインする
パソコンのブラウザでログイン画面を開き、プラグインが表示するパスキーでのログインを選びます。ブラウザのパスキー画面でスマートフォンを使う選択肢を選ぶと QR コードが出るので、スマートフォンで読み取って画面ロックで確認します。
うまくいかないときは、次の点を確認してください。
- QR コードを読み取ってもつながらない:両方の端末で Bluetooth がオンになっているか、離れすぎていないか
- 「このサイトのパスキーがない」と表示される:スマートフォン側に、同じドメインのパスキーが登録されているか
- パスキーの画面がそもそも出ない:サイトが HTTPS で開かれているか、ブラウザが古くないか
- サイトのドメインを変えた:パスキーはドメインに結び付くため、移転後は登録し直してもらう必要がある
サイト独自のQRログインを作る前に
「パソコンに表示した QR コードを、ログイン済みのスマートフォンで読むと、パソコン側がログインする」方式を自作したい、という相談もよくあります。この方式は、攻撃者が自分の画面に出した QR コードを偽サイトに埋め込み、利用者に読み取らせると、攻撃者の画面がログイン状態になる、という中継型の攻撃(QRLjacking と呼ばれる)を防ぎにくい構造です。
どうしても作る場合は、少なくとも次を満たす必要があります。
- QR コードに入れる値は推測できない乱数にし、短い有効期限で1回だけ使えるようにする
- スマートフォン側の確認画面に、ログインしようとしている端末やおおよその場所を表示し、利用者が自分の操作か判断できるようにする
- 承認の処理は nonce と権限チェックを入れ、ログイン失敗と同じように回数を制限する
- 管理者権限のアカウントには使わない
それでも中継型の攻撃を根本からは防げないため、管理画面のログインにはパスキーを使うほうが安全です。
締め出されたときの戻り方
パスキーのプラグインの不具合や設定ミスでログインできなくなった場合は、FTP / SFTP やファイルマネージャーで wp-content/plugins/ の該当プラグインのフォルダー名を変えると、そのプラグインは無効になり、通常のログインに戻れます。WP-CLI が使える環境なら次のコマンドでも無効化できます。
# 有効なプラグインのスラッグを確認してから無効化する
wp plugin list --status=active
wp plugin deactivate wp-webauthn
まとめ
- WordPress の QR コードログインは、パスキーのクロスデバイス認証を使うのが現実的で、QR コードの表示はブラウザと OS が受け持つ
- 両方の端末の Bluetooth、スマートフォン側のパスキー、サイトの HTTPS が必要
wp-qr-code-loginのような更新の止まったプラグインは使わない- サイト独自の QR ログインは中継型の攻撃を防ぎにくく、管理者アカウントには向かない
- 認証器は2つ以上登録し、プラグインを無効化して戻る手段を確かめてから導入する