Webサイトを作成する際、グループだけで閲覧するようなサイトを作りたくなることがあります。システムとして構築すると面倒なのでWebサーバーの機能を使って簡単にパスワードを設定してみました。
パスワードを設定する手段
Apache(アパッチ)などのWebサーバーには『Basic認証』と呼ばれる機能が備わっています。
このBasic認証はアクセスしてきたユーザー(閲覧者)に対して、ユーザーIDとパスワードの入力画面を表示して認証する仕組みを提供してくれます。
やり方は簡単で “.htaccess” と “.htpasswd” の2ファイルを作成するだけで限られたユーザーだけが閲覧できるサイトを構築することができます。
Basic認証をする手順
.htpasswdファイルの作成
.htpasswdファイルには、ユーザーIDとパスワードを対にして書き込みます。パスワードは平文(そのままの文字列)では無く、暗号化した文字列を保存するため「テキストエディタで作成する」と言うわけにはいきません。Linuxなどでは標準コマンド(htpasswd)で作成することができますが、Windowsには機能が無いのでXAMPPを使って作成します。
- 作業するパソコンにXAMPPがインストールされていない場合には以下を参照してインストールします。
参考 Windows 10 にPHPの開発環境をインストールする方法 - コマンドプロンプトを起動し以下のコマンドを実行します。
C:\xampp\apache\bin\htpasswd.exe -c C:\.htpasswd 【任意のユーザーID】
htpasswd.exeの場所はXAMPPのインストール場所によって異なります。
- ユーザーIDに対するパスワードを求められるので入力します。
New password: Re-type new password:
- C:\に以下のような.htpasswdファイルが作成されます。
user:$apr1$ZwEiz3UM$0Bh0kvK7d85X9iHf/
入力したユーザーID、パスワードによって変わります。
.htpasswdファイルの作成場所は実行したコマンドによって異なります。
- .htpasswdファイルをサーバーにアップロードします。
public_htmlなど外部からアクセス可能なディレクトリ以外へアップロードすることをオススメします。ただし、サーバーによっては許可されていないので注意してください。
.htpasswdファイルを作成するやり方は以上です。
.htaccessファイルの作成
WordPressなどを使用してWebサイトを構築していると、すでに.htaccessファイルが存在してることがあるので、その場合には既存のファイルに追記する必要があります(上書き禁止)。
- .htaccessファイルに対して以下の内容を追記します。
AuthUserFile /home/user/public_html/.htpasswd AuthName "Enter your ID and password." AuthType Basic require valid-user
“AuthUserFile” は.htpasswdをアップロードしたフルパスを記述します。フルパスは使用しているサーバーによって異なるので注意してください。
- .htaccessをパスワードをかけたいディレクトリーにアップロードします。
サイト全体にパスワードをかけたい場合には “public_html” などのドキュメントルートに設置します。
htaccessファイルを作成するやり方は以上です。
これで、対象のWebサイトにアクセスすると前述したようなダイアログが表示され、ユーザーIDとパスワードの入力を促すことができるようになります。