Webサイトにベーシック認証(Basic認証)でアクセス制限をかける


サーバにアップロードされている公開前のWebサイトやテスト環境は観覧されると困るので、アクセス制限をかけたいところです。
今回はWebサイトにベーシック認証(Basic認証)でアクセス制限をかける方法をご紹介します。

Basic認証とは、HTTPで定義される認証方式の一つで基本認証とも呼ばれます。
アクセスを制限する時によく使われまして、認証を通るにはユーザー名(ID)とパスワードが必要となります。

ベーシック認証(Basic認証)によるアクセス制限

 
こういったものです。


今回は簡単にアクセス制限をする方法をご紹介します。

Basic認証をつけるのには.htaccessと.htpasswdの2つのファイルが必要になります。
PCの環境・設定によっては、ドットから始まる拡張子だけのファイルを作成できないこともあります。
そういった場合は、htacces.txtやhtpasswd.txtのようにtxtファイルとして作成しておき、FTPなどでサーバにアップロードしてからファイル名をリネームすると良いでしょう。

.htaccessの作成


.htaccessは大事な設定が書かれているファイルなので「Files ~ “^\.ht”」の部分で.htaccessや.htpasswdなどの.htで始まるファイルを見れないようにします。

.htaccess

<Files ~ "^\.ht">
deny from all
</Files>
AuthUserFile /home/◯◯◯◯/◯◯◯◯/public_html/stg/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user



AuthUserFileにはドキュメントルートを指定します。
今回はテスト環境ということでstgフォルダの中にindex.htmlなどのファイルが入っているわけですが、同じディレクトリに.htaccessとこのあと作成する.htpasswdを置くので、その.htpasswdファイルまでのパスになります。

AuthGroupFileはグループごとにアクセスを許可する指定です。
とくにそんなファイルがない場合は「/dev/null」を指定します。

AuthNameは認証領域で認証ダイアログボックスに表示される文字列を入れます。
AuthName “ユーザー名とパスワードを入力して下さい”みたいに変更してもいいです。
日本語でよく見る文字列ですね。環境によっては文字化けするそうなので英語でいいかなと。

AuthTypeで認証方式をBasicに。

requireは許可するユーザーの指定です。
オプションでuser指定とgroup指定もありますが、今回は簡単なBasicの説明とします。
ほとんど認証が通った全ユーザーにアクセス許可するとおもうので「valid-user」としておきます。

また、上記の記述の下に改行して下記の記述することで、特定のIPは許可するという設定もできます。

.htaccess

Satisfy any
Order deny,allow
Allow from 123.4.567.89 # 許可するIPアドレス
Allow from 987.6.543.21 # 複数設定可能
Deny from all



Satisfyをanyにすることで、上記で設定したBasic認証かこちらのIPアドレスかどちらかが通れば許可されるようになります。

Allow fromのあとにIPアドレスを入れることで、そのIPアドレスからのアクセスは許可されます。どんどん行を増やして追加することで複数設定が可能です。
社内からは別にアクセス制限かけなくてもという時などに使えます。

.htpasswdの作成


次に、Basic認証に必要な.htpasswdを作成します。
.htpasswdに書く内容を簡単に作成できるツールがあるのでそれを使います。

.htpasswdファイル生成(作成)
http://www.luft.co.jp/cgi/htpasswd.php

.htpasswdの作成01



ID:に希望のユーザー名を、Password:に設定するパスワードを入れます。

もし、頑丈なパスワードを設定してければ簡単につくれるツールもあります。

パスワード生成(パスワード作成)ツール
http://www.luft.co.jp/cgi/randam.php

このパスワード生成ツールはいろんなところで使えそうです。
一緒にこちらの使い方も説明します。

パスワード生成ツール01



いろいろオプションを選択しまして「生成」ボタンをクリックすると、その下に生成されたパスワードがいくつか表示されます。

パスワード生成ツール02



そこから好きなパスワードをコピーしてきてください。

パスワードを生成したら.htpasswdファイル生成に戻り、Password:にパスワードを入れて「生成」ボタンをクリック。
すると下に.htpasswdに貼り付けるテキストが生成されます。

.htpasswdの作成02



こちらの生成されたテキストをコピーして.htpasswdに貼り付けます。

.htpasswdの作成03



htpasswdの記述はこれだけです。

あとは.htaccessと.htpasswdをアクセス制限をかけるディレクトリに置くだけです。

Basic認証に必要な.htpasswdと.htpasswd



以上でBasic認証の設定が完了です。
これでファイルを置いたディレクトリのWebサイトにアクセスするとパスワードを聞かれるようになります。

また、WordPressのログイン画面で2段階認証としてBasic認証をかけたい場合があります。
そういった場合は、

<Files wp-login.php>
AuthUserFile /home/◯◯◯◯/◯◯◯◯/public_html/stg/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
</Files>

このように「Files wp-login.php」と記述することで対応できます。

アクセス制限をかけたい時がある場合は、.htaccessと.htpasswdでBasic認証をかけてあげてください。