1. HOME
  2. Web

Basic認証でサイトにパスワードを設定する方法

投稿日:2018年3月17日/更新日:2018年3月30日

Basic認証が必要な時

サイト制作中で、まだ外部には公開したくないが自身を含めて特定の人には見れるようにしたい時やサイト内の特定のディレクトリだけ制限をかけたい時があると思います。

Basic認証を利用するとそのユーザー名とパスワードを知っている人のみがサイトの内容を閲覧する事が可能です。但し何らかの形でユーザー名とパスワードが漏れるとアクセス可能になりますので注意が必要です。

Basic認証設定時

Basic認証を設定したサイトにアクセスするとユーザー名、パスワードを要求されます。

ブラウザにより表示は異なりますがユーザー名、パスワードを要求される事に変わりはありません。画像はChromeでアクセスした場合です。 認証が必要です。

Edgeでアクセスした時は以下のようになります。

Basic認証設定方法

BASIC認証を設定するサーバー上のディレクトリ内に .htaccess がないか確認

.htaccess がある場合は念のためバックアップを取ります。

.htaccess がない場合
PC上で htaccess.txt などを作成してFTPソフト上でファイル名を変更します。(名前の変更)

「.htaccess」に以下を追記します。新規で作成した場合は記載します。

AuthUserFile /〇〇/〇〇/〇〇/.htpasswd
AuthGroupFile /dev/null
AuthName "Input ID and Password."
AuthType Basic
require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
deny from all
</Files>

1行目の /〇〇/〇〇/〇〇/部分はサーバー上のフルパスとなります。
「.htpasswd」はBASIC認証のID、パスワードを記載しておくファイルです。

サーバーのフルパスを知る方法

.htpasswd を指定するためにサーバーのフルパスを調べないといけませんがPHPで調べる事が可能です。まず path.php などファイル名は適当でかまいませんのでファイルを作成して以下を記述します。

<?php echo __FILE__; ?>

サーバーにFTPなどで.htpasswd を置くディレクトリにアップロードを行います。そのファイルをブラウザで開くとサーバーのフルパスが確認できます。

ブラウザでフルパスの確認ができましたら、アップロードしたファイル(例では path.php)を削除します。

.htpasswd の作成

htpasswd.txtを作成してFTPソフト上で.htpasswd にファイル名を変更します。
その後、IDとパスワードを記載しますがパスワードは暗号化されたものを使用します。
「.htaccess による認証用 パスワード暗号化ツール」が便利です。
http://www.luft.co.jp/cgi/htpasswd.php

IDをパスワードを入力して「生成」をクリックするとIDはそのままでパスワードのみ暗号化された内容が表示されます。パスワードは可能な限り複雑で長いものを推奨しますが、スマホの実機でアクセスする時は入力がたいへんになるかもしれません。

上記で作成した内容を.htpasswdファイルに貼り付けますがIDは別に変更しても問題ありません。BASIC認証ログイン時には変更したIDを使用します。

.htaccess と .htpasswd をアップロード

準備が整いましたら.htaccess と .htpasswd をアップロードを行います。

.htaccess はBASIC認証をかけたいディレクトリ内にアップロード
.htpasswd は.htaccess の1行名に記載したフルパスの位置と一致する箇所にアップロードを行います。(必ずしも.htaccess と同じディレクトリに置く必要はありませんが、最初は分かりやすくするため同じディレクトリでいいかと思います。)

そのディレクトリをブラウザでアクセスして以下のように認証を求められると設置完了です。ID、パスワードを入力してアクセス可能か確認をします。

問題なくアクセスできましたでしょうか。

BASIC認証の解除

BASIC認証の解除したい時は.htaccess に「追記」した部分のみを削除するか、「追記」した全ての行の先頭に # を記載してコメントアウトを行います。何度か設定と解除を繰り返す時はコメントアウトのほうが再設定が楽です。

コメントアウト

# AuthUserFile /〇〇/〇〇/〇〇/.htpasswd
# AuthGroupFile /dev/null
# AuthName "Input ID and Password."
# AuthType Basic
# require valid-user
# <Files ~ "^.(htpasswd|htaccess)$">
# deny from all
# </Files>

解除後は .htpasswd を削除します。

まとめ

テスト環境や制作中のサイトではBASIC認証は比較的簡単に設定できますので、設定しておく事をおすすめします。設定がうまくいかない場合は .htaccess 1行名のフルパス部分に間違いがないか確認を行いましょう。

Leave a Reply





PAGE
TOP