Basic認証を手動で設定する機会もあるかと思うので、エックスサーバーのアクセス制限機能を利用せず、手動でのBasic認証設定を検証してみました。
目的はBasic認証を設定する際の、必要な要素の確認と仕組みの理解です。
今回はテスト用のサブドメインに対して設定します。
目次
エックスサーバー上でアクセス制限を利用した際の挙動確認
手動で設定する前に、エックスサーバーの機能にあるアクセス制限からBasic認証をかけた場合、どのような挙動になるのか確認してみました。
エックスサーバーでサブドメインを設定する際は、その親ドメインの中にディレクトリが作られ、その配下にサブドメイン用のフォルダが生成されるという、階層構造のようなディレクトリ管理になります。
どうやらルートドメインの下にある「htpasswd」というディレクトリの中にサブドメインのディレクトリが自動で作成され、その中の.htpasswdにユーザー名と暗号化したパスワードが書き込まれるようです。
- ルートドメインディレクトリ
- htpasswdディレクトリ
- サブドメインディレクトリ
.htpasswd
- サブドメインディレクトリ
- htpasswdディレクトリ
同時にサブドメインの中にある.htaccessに、以下が自動追記されました。
- ルートドメインディレクトリ
- public_htmlディレクトリ
- サブドメインディレクトリ
.htaccess
- サブドメインディレクトリ
- public_htmlディレクトリ
テストサイトにはWordPressがインストールされていますが、# END WordPressの下に書き込まれました。
.htaccess
# END WordPress
AuthUserFile "/home/xsXXXXXX/ルートドメインディレクトリ/htpasswd/サブドメインディレクトリ/.htpasswd"
AuthName "Member Site"
AuthType BASIC
require valid-user
手動で設定してみる
とはいえ、単純に上記ですでに作られた.htpasswdや.htaccessに対して、同じことを手動でやってみるだけでいいのですが(アクセス制限の機能を一度削除し、自力で記述を追記するイメージ)、実は上記を実施する前に、.htpasswdを.htaccessと同じ階層に置いてみたりしました。
しかし、Basic認証を何度入力しても突破できない状態に陥ってしまいました。
どう見ても入力ミスはないし、空行や謎のスペースも入っていない、AuthUserFileのルートの書き方なども特に間違っていないように思いましたが、原因は以下かもしれません。
①エックスサーバーの仕様で.htpasswdを置く場所がそもそも決まっており、それを無視した配置をしていたため
②.htaccessの中に書くBasic認証の記述の順番が最適ではなかった
今回学んだこと
- Basic認証を設定するには、
.htpasswdの新規作成および追記、.htaccessへの追記が必要。 .htpasswdには認証ユーザーの情報、.htaccessにはBasic認証を利用する旨と.htpasswdへの接続パスを記入。.htpasswdのパスワードは暗号化が必要なため、以下のツールなどを利用する。https://www.luft.co.jp/cgi/htpasswd.php