説明
2要素認証プラグインは、パスワードに加えて別の認証方法をユーザーに要求することで、WordPress のログインにセキュリティの層を追加します。これにより、パスワードが漏洩した場合でも、不正アクセスから保護できます。
セットアップ手順
重要: 各ユーザーは、2要素認証設定を個別に構成する必要があります。
個人ユーザー向け
- プロフィールに移動: WordPress 管理画面で「ユーザー」「プロフィール」を選択
- 2要素認証オプションを探す:「2要素認証オプション」のセクションまでスクロール
- 方法を選択: 1つ以上の認証プロバイダを有効化 (サイト管理者が1つ以上のプロバイダを非表示にしている場合があるため、利用可能なプロバイダは異なる場合があります):
- Authenticator App (TOTP) – Google Authenticator、Authy、1Password などのアプリを利用
- メールコード – メールでワンタイムコードを受信
- バックアップコード – 緊急時用のワンタイムバックアップコードを生成
- ダミーメソッド – テスト専用 (WP_DEBUG が必要)
- 各方法の設定: 有効にした各プロバイダのセットアップ手順に従う
- メイン方法の設定: デフォルトの認証として使用する方法を選択
- 変更の保存:「プロフィールを更新」をクリックして設定を保存
サイト管理者向け
- プラグイン設定:「設定 Two-Factor」配下に設定ページがあり、サイト全体で無効にするプロバイダを設定できます。
- ユーザー管理: 管理者は他のユーザーのプロフィールを編集することで2要素認証を設定できます
- セキュリティの推奨事項: アカウントのロックアウトを防ぐため、ユーザーにバックアップ方法の有効化を促す
利用可能な認証方法
認証アプリ (TOTP) – 推奨
- セキュリティ: 高 – 時間ベースのワンタイムパスワード
- 設定方法: 認証アプリで QR コードをスキャン
- 互換性: Google Authenticator、Authy、1Password などの TOTP アプリと連携
- 最適な用途: ほとんどのユーザー。優れたセキュリティと使いやすさを両立
バックアップコード – 推奨
- セキュリティ: 中 – 一度だけ使用するコード
- 設定方法: 緊急アクセス用のバックアップコードを10個生成
- 互換性: 特別なハードウェア不要で、あらゆる環境で動作
- 最適な用途: 他の方法が使えない場合の緊急アクセス用
メールコード
- セキュリティ: 中 – メールで送信されるワンタイムコード
- 設定方法: 自動 – WordPress のメールアドレスを使用
- 互換性: メール送受信が可能なあらゆる端末で動作
- 最適な用途: メールベースの認証を好むユーザー
FIDO U2F セキュリティキー
- ブラウザーのサポート終了に伴い、非推奨となり削除されました。
ダミーメソッド
- セキュリティ: なし – 常に成功
- 設定方法: WP_DEBUG が有効な場合のみ利用可能
- 目的: テストおよび開発専用
- 最適な用途: プラグインをテストする開発者
重要な注意事項
HTTPS 要件
- すべての方式は HTTP・HTTPS サイトの両方で動作する
ブラウザーの互換性
- TOTP とメール方式はすべての端末・ブラウザーで動作する
アカウント復元
- アカウントのロックアウトを防ぐため、常にバックアップコードを有効にしておく
- すべての認証方法にアクセスできなくなった場合は、サイト管理者に連絡してください。
セキュリティのベストプラクティス
- 可能な場合は複数の認証方法を使用する
- バックアップしたコードを安全な場所に保管する
- 認証設定を定期的に確認・更新する
WordPress での2要素認証の詳細については、WordPress Advanced Administration セキュリティガイドをご覧ください。
詳細な経緯は、この記事を参照してください。
アクション & フィルター
プラグインで提供するアクションフックとフィルターフックは以下のとおり:
two_factor_providersフィルターフックは、メールや時間ベースのワンタイムパスワード (TOTP) などの利用可能な2要素認証プロバイダを上書きします。配列の値は2要素認証プロバイダの PHP クラス名です。two_factor_providers_for_userフィルターは、特定のユーザーが利用可能な2要素認証プロバイダを上書きします。配列の値はプロバイダクラスのインスタンスで、2番目の引数にはユーザーオブジェクトWP_Userを指定します。two_factor_enabled_providers_for_userフィルターフックは、ユーザーに対して有効化している2要素認証プロバイダの一覧を上書きします。最初の引数は有効なプロバイダクラス名の配列で、2番目の引数はユーザー ID です。two_factor_user_authenticatedアクションフックは、認証処理直後に発火し、ログインしたユーザーを判別するための第1引数としてログイン済みのWP_Userオブジェクトを受け取ります。two_factor_user_api_login_enableフィルターは REST API と XML-RPC での認証をアプリケーションパスワードのみに制限します。2番目の引数にユーザー ID が提供されます。two_factor_email_token_ttlフィルターフックは、メールトークン生成後の有効期間を秒単位で上書きします。第一引数として秒単位の時間を受け付け、また、認証するWP_Userオブジェクトの ID も受け付けます。two_factor_email_token_lengthフィルターは、メールトークンのデフォルト文字数8を上書きします。two_factor_backup_code_lengthフィルターは、バックアップコードのデフォルトの文字数「8」を上書きします。関連付けられているユーザーのWP_Userを2番目の引数として指定します。two_factor_rest_api_can_edit_userフィルターは、REST API を介してユーザーの2要素認証の設定を編集できるかどうかを上書きします。1番目の引数は現在の$can_edit(真偽値)、2番目の引数はユーザー ID です。two_factor_before_authentication_promptアクションは、プロバイダオブジェクトを受け取り、認証入力フォームのプロンプト表示前に発火します。two_factor_after_authentication_promptアクションは、プロバイダオブジェクトを受け取り、認証入力フォームのプロンプト表示後に発火します。two_factor_after_authentication_inputアクションは、プロバイダオブジェクトを受け取り、認証入力フォームの入力欄の後に発火します (フォームに入力欄がない場合はtwo_factor_after_authentication_promptの直後に発火します)。two_factor_login_backup_linksは、2要素認証ログインフォームに表示されるバックアップリンクをフィルタリングします。
2要素認証後のリダイレクト
2要素認証の確認後に特定の URL へリダイレクトするには、WordPress コアに組み込まれている login_redirect フィルターを使用してください。このフィルターは通常の WordPress ログインフローと同じように機能します:
add_filter( 'login_redirect', function( $redirect_to, $requested_redirect_to, $user ) {
return home_url( '/dashboard/' );
}, 10, 3 );
スクリーンショット
FAQ
-
Two-Factor プラグインはどのバージョンの PHP と WordPress をサポートしていますか ?
-
このプラグインは最新2つの WordPress メジャーバージョンとその WordPress がサポートする最小の PHP バージョン をサポートしています。
-
フィードバックを送信したり、バグに関するサポートを受けるには
-
バグ、機能の提案、その他セキュリティに関連しないフィードバックを報告するには、GitHub 上の Two Factor レポジトリのイシューを利用してください。新しいイシューを立てる際には、既存のイシューを検索し、他の誰かが同じフィードバックを報告していないかどうか確認してください。
-
セキュリティ関連のバグを報告するには
-
プラグイン開発チームおよび WordPress コミュニティは、セキュリティ関連のバグ対応を真摯に受け止めています。責任ある開示にご尽力いただいたことに感謝するとともに、そのご貢献を正式に認識できるよう最善を尽くします。
セキュリティの問題を報告するには、WordPress HackerOne プログラムにアクセスしてください。
-
すべての認証方法へのアクセスを失った場合はどうすればよいですか ?
-
バックアップコードを有効にしている場合は、いずれかのコードを使用してアクセスを回復できます。バックアップコードがない、またはすべて使い切った場合は、サイト管理者にアカウントのリセットを依頼する必要があります。ロックアウトを防ぐため、常にバックアップコードを有効にして安全な場所に保管してください。
-
このプラグインを WebAuthn と一緒に使用できますか ?
-
このプラグインは以前 FIDO U2F をサポートしていましたが、これは WebAuthn の前身です。WebAuthn サポートの追加については、次のイシューで議論されています: https://github.com/WordPress/two-factor/pull/427
-
Two-Factor でパスキーやハードウェアセキュリティキーを使用する推奨方法はありますか ?
-
はい。パスキーやハードウェアセキュリティキーには、Two-Factor Provider: WebAuthn プラグイン (https://wordpress.org/plugins/two-factor-provider-webauthn/)
をインストールできます。このプラグインは Two-Factor と直接連携し、WebAuthn ベースの認証を追加の2要素認証オプションとして提供します。
評価
貢献者と開発者
Two-Factor はオープンソースソフトウェアです。以下の人々がこのプラグインに貢献しています。
貢献者変更履歴
0.16.0 – 2026-03-27
- 破壊的変更: レガシーな FIDO U2F プロバイダのサポートを削除 (#439)。
- 新機能: wp-admin にプラグイン設定専用ページを追加 (#764)。
- 新機能: サポートリンクフィルターを追加し、リカバリ/ヘルプリンクのカスタマイズを可能に (#615)。
- 新機能: バックアップコード UI のスタイルと動作を刷新 (#804)。
- バグ修正: TOTP プロバイダを無効化したときに保存済みの TOTP シークレットを削除するよう修正 (#802)。
- バグ修正: プロバイダが消失した場合にログイン/設定チェックが失敗開放にならないよう、プロバイダ処理を強化 (#586)。
- バグ修正: ユーザー設定で設定済みのプロバイダのみが保存・有効化されるよう修正 (#798)。
- バグ修正: 設定ページのアクセシビリティを改善し、プロフィール設定リンクの動作を修正 (#828、#830)。
- バグ修正: プロバイダファイルの PHPCS 違反を解消 (#851)。
- 開発アップデート: ログインスタイルとプロバイダスクリプトをインライン出力からエンキュー/外部アセットに移行 (#807、#814)。
- 開発アップデート: インラインドキュメントを改善し、静的解析 (WPCS/phpstan) との互換性を向上 (#810、#815、#817)。
- 開発アップデート: ユニットテストの安定性を向上し、CI コードカバレッジレポートを統合 (#825、#841、#842)。
- 開発アップデート: readme ドキュメントを更新し、CI ワークフローのインフラを最新化 (#835、#837、#843、#849)。
- 依存関係の更新:
qsを 6.14.1 から 6.14.2 に更新 (#794)。 - 依存関係の更新:
basic-ftpを 5.0.5 から 5.2.0 に更新 (#816)。 - 依存関係の更新: 自動 lint/フォーマット更新と関連 Composer パッケージを更新 (#799)。
0.15.0 – 2026-02-13
- 破壊的変更: 想定されるケースでのみ2要素認証フローを発動するよう変更 by @kasparsd (#660、#793)。
- 新機能: 2要素認証コードのメールにユーザーの IP アドレスと状況に応じた警告を追加 by @todeveni (#728)
- 新機能: TOTP 向けメール文言を最適化 by @masteradhoc (#789)
- 新機能: プラグイン一覧にプロフィールへの「設定」アクションリンクを追加 by @hardikRathi (#740)
- 新機能: フォームフックを追加 by @eric-michel (#742)
- 新機能: RFC6238 への完全対応 by @ericmann (#656)
- 新機能: TOTP セットアップのユーザー体験を統一 by @kasparsd (#792)
- ドキュメント:
@sinceドキュメントを追加 by @masteradhoc (#781) - ドキュメント: ユーザー/管理者向けドキュメントを更新し、スクリーンショット追加の準備 by @jeffpaul (#701)
- ドキュメント: changelog とクレジットを追加し、リリースノートを更新 by @jeffpaul (#696)
- ドキュメント: readme.txt を整理 by @masteradhoc (#785)
- ドキュメント: TOTP セットアップ手順の上に日時情報を追加 by @masteradhoc (#772)
- ドキュメント: TOTP セットアップ手順を明確化 by @masteradhoc (#763)
- ドキュメント: RELEASING.md を更新 by @jeffpaul (#787)
- 開発アップデート:
masterへのマージ時に SVN trunk へのデプロイを一時停止 by @kasparsd (#738) - 開発アップデート: PHP 互換性の CI チェックを修正 by @kasparsd (#739)
- 開発アップデート: Playground の参照を修正 by @kasparsd (#744)
- 開発アップデート: メールへの新しいヘルパーテキスト追加時に既存の翻訳を保持 by @kasparsd (#745)
- 開発アップデート:
missing_direct_file_access_protectionを修正 by @masteradhoc (#760) - 開発アップデート:
mismatched_plugin_nameを修正 by @masteradhoc (#754) - 開発アップデート: Props Bot ワークフローを導入 by @jeffpaul (#749)
- 開発アップデート: Plugin Check: $domain パラメーター欠落を修正 by @masteradhoc (#753)
- 開発アップデート: テスト: サポート対象の WP 6.8 に更新 by @masteradhoc (#770)
- 開発アップデート: PHP 8.5 の非推奨メッセージを修正 by @masteradhoc (#762)
- 開発アップデート: trunk への PHP 7.2・7.3 チェックを除外 by @masteradhoc (#769)
- 開発アップデート: Plugin Check エラー (
MissingTranslatorsComment、MissingSingularPlaceholder) を修正 by @masteradhoc (#758) - 開発アップデート: 最新および trunk 版 WP への PHP 8.5 テストを追加 by @masteradhoc (#771)
- 開発アップデート: 誤検知への
phpcs:ignoreを追加 by @masteradhoc (#777) - 開発アップデート: QR コード URL の
otpauthリンクを修正 (TOTP) by @sjinks (#784) - 開発アップデート: deploy.yml を更新 by @masteradhoc (#773)
- 開発アップデート: 必須 WordPress バージョンを更新 by @masteradhoc (#765)
- 開発アップデート: リダイレクト後に処理が停止することを保証するよう修正 by @sjinks (#786)
- 開発アップデート:
WordPress.Security.EscapeOutput.OutputNotEscapedエラーを修正 by @masteradhoc (#776) - 依存関係の更新: qs と express を更新 by @dependabot[bot] (#746)
- 依存関係の更新: lodash を 4.17.21 から 4.17.23 に更新 by @dependabot[bot] (#750)
- 依存関係の更新: lodash-es を 4.17.21 から 4.17.23 に更新 by @dependabot[bot] (#748)
- 依存関係の更新: phpunit/phpunit を 8.5.44 から 8.5.52 に更新 by @dependabot[bot] (#755)
- 依存関係の更新: symfony/process を 5.4.47 から 5.4.51 に更新 by @dependabot[bot] (#756)
- 依存関係の更新: qs と body-parser を更新 by @dependabot[bot] (#782)
- 依存関係の更新: webpack を 5.101.3 から 5.105.0 に更新 by @dependabot[bot] (#780)
0.14.2 – 2025-12-11
- 新機能: rest_api_can_edit_user_and_update_two_factor_options フィルターを追加 by @gutobenn (#689)
- 開発アップデート: Coveralls ツールを削除し、インラインカバレッジレポートを追加 by @kasparsd (#717)
- 開発アップデート: 削除済みブランチではなく main ブランチから取得するよう blueprint パスを更新 by @georgestephanis (#719)
- 開発アップデート: blueprint と WP.org アセットのデプロイを修正 by @kasparsd (#734)
- 開発アップデート: タグリリース時のみリリースをアップロードするよう変更 by @kasparsd (#735)
- 開発アップデート: playwright と @playwright/test を更新 by @dependabot[bot] (#721)
- 開発アップデート: tar-fs を 3.1.0 から 3.1.1 に更新 by @dependabot[bot] (#720)
- 開発アップデート: node-forge を 1.3.1 から 1.3.2 に更新 by @dependabot[bot] (#724)
- 開発アップデート: js-yaml を更新 by @dependabot[bot] (#725)
- 開発アップデート: 最新の WP コアバージョンでのテスト済みとしてマーク by @kasparsd (#730)
0.14.1 – 2025-09-05
- 表示用の TOTP URL を URI エンコードしないよう修正 by @dd32 (#711)
- 重複していた Security.md を削除 by @slvignesh05 (#712)
- リンターで検出された問題を修正 by @sudar (#707)
- 開発依存関係を更新し、失敗していた QR ユニットテストを修正 by @kasparsd (#714)
- チェックボックスの JS change イベントを発火するよう修正 by @gedeminas (#688)
0.14.0 – 2025-07-03
- 機能: REST API と XML-RPC 認証でアプリケーションパスワードをデフォルトで有効化 by @joostdekeijzer (#697、#698)。以前は two_factor_user_api_login_enable フィルターを true にする必要がありましたが、アプリケーションパスワード認証時はデフォルトで有効になりました。通常パスワードでの XML-RPC ログインは引き続き無効です。
- 機能: 設定を簡略化するため、推奨方法にラベルを追加 by @kasparsd (#676、#675)
- ドキュメント: WP.org プラグインデモを追加 by @kasparsd (#667)
- ドキュメント: WP コアと PHP のサポートバージョンを文書化 by @jeffpaul (#695)
- ドキュメント: リリースプロセスを文書化 by @jeffpaul (#684)
- ツール: SVN trunk から WP.org の重複スクリーンショット・画像を削除 by @jeffpaul (#683)




