WordPressサイトのHTTP Auth導入でJetpackが引き起こす意外な落とし穴

はるるるr

WEB制作の現場でWordPressを扱う方なら、一度は検討したことがあるのが「BASIC認証(HTTP Auth)」の導入です。
制作中のサイトを外部に見せないため、クライアント限定の確認環境を作るため——その理由は様々です。

しかし、私が先日遭遇したのは、そんな便利なHTTP AuthとJetpackという人気プラグインの間で起きた思わぬ衝突でした。
今日はそのトラブルと解決までの道のりを共有したいと思います。

HTTP Authを導入する理由

WordPressは世界中で利用されている反面、攻撃の標的になりやすいCMSです。
そのため制作途中のサイトやステージング環境を外部にさらさないよう、BASIC認証を使うことは非常に一般的な方法です。

たとえばApacheなら、.htaccessに次のように記述します。

apache

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/.htpasswd
Require valid-user


この設定を入れることで、WordPressに到達する前にIDとパスワードを入力する「第1の関所」を設けることができます。
特に管理画面やログインページを保護するには非常に効果的です。

トラブルはJetpackが原因だった

今回、私たちが作業していたのは、とある企業サイトのステージング環境。
ログインページをSiteGuard WP PluginでカスタムURLに変更し、さらにBASIC認証を導入して二重の防御を実装していました。

ところがいざ運用を開始してみると、こんな現象が発生。

  • WordPressにBASIC認証でログイン
  • 管理画面のトップページや投稿一覧などは正常に閲覧可能
  • プラグイン一覧ページ(/wp-admin/plugins.php)を開くと、再度BASIC認証を求められる
  • 認証を突破しても「500 Internal Server Error」や「接続がリセットされました」になることも

最初は.htaccessの設定ミスかと思い、書き方を見直しました。
しかし、他の管理画面ページは問題なく表示できる。
にもかかわらず、特定のページだけ再度認証が出るのは非常に不可解でした。

Jetpackの仕組みが原因

調べを進めるうちに、原因はJetpackにあることが判明しました。

Jetpackは非常に多機能で、サイト統計、画像CDN、セキュリティ機能などを提供してくれます。
しかし、その裏側ではREST APIやXML-RPCを利用してWordPress.comと通信しています。
この通信が、BASIC認証の壁に阻まれるのです。
Jetpackは管理画面にアクセスしたとき、WordPress.comと認証連携するためにAjaxやREST APIを叩きます。

BASIC認証が設定されていると、APIコールがすべて401 Unauthorizedで弾かれる。

結果、Jetpackは管理画面内でエラーを引き起こし、ページ遷移時に再認証を要求することになる。

実際、プラグイン一覧ページではJetpack関連のAPI通信が多く行われるため、再認証ループが特に顕著に出ていました。

最終的な解決策

私たちが最終的に取った対処は、Jetpackを無効化することでした。

無効化すると、すべての再認証問題がピタリと止まりました。
管理画面内のページ遷移もスムーズになり、HTTP AuthとWordPressがきちんと共存する形に戻りました。

JetpackとHTTP Authの併用は要注意

ここで強調したいのは、JetpackとHTTP Authの相性の悪さです。

REST APIを利用するプラグイン全般が、BASIC認証による壁に阻まれる。

特にJetpackは外部通信が必須のため、HTTP Authを設定すると、管理画面が不安定になる可能性が非常に高い。

WordPressの管理画面は、思っている以上に裏側でAPI通信が行われています。
HTTP Authを導入する際には、「外部サービスと通信するプラグイン」との併用はリスクがあると心得るべきです。

結論

ステージング環境やクローズド環境で外部連携が不要なら、HTTP Authだけで十分。

本番環境や外部サービスとの連携が必要なら、Jetpackを使う代わりに二段階認証やIP制限を活用するほうが安全で快適。

Jetpackは便利ですが、HTTP Authとの併用は非常に相性が悪いのが現実です。
制作現場では、「便利だからといって何でも入れる」ことが、かえって大きなトラブルにつながるという教訓になりました。

HTTP Authを導入する際は、ぜひJetpackや他の外部通信系プラグインとの関係を再確認してみてください。
同じように悩んでいる方の参考になれば幸いです!

おすすめ記事

お問い合わせ

WEB制作、動画制作、オンライン配信、SNS運用代行などお気軽にご相談、お問い合わせください。

お問い合わせはこちら