1. Basic認証とは?
HTTP認証の中で最も一般的なのが、Basic認証です。
Basic認証では、ユーザーが入力したパスワードが Basic64 でエンコードされてサーバーに送信されるのですが、Basic64 はデコード(真逆の変換)できるため、通信の内容を見られるとパスワードが知られてしまうという弱点を持っています。そのため、通常は HTTPS と合わせて利用します(通信内容が暗号化されますので)。
手軽であるため、レンタルサーバーでのアクセス制限機能などにも利用されています。
2. Basic認証の設定手順
ウェブサーバーには Apache を想定し、設定ファイルには .htaccess
ファイルを利用するという前提で説明します。
(1) パスワードファイルを生成する
htpasswd
コマンドを実行して、ユーザー名やパスワードを記録したパスワードファイルを生成します。
$ htpasswd -c {ファイルパス} {ユーザー名}
実際に実行した例が以下です。
$ htpasswd -c .htpasswd foo
New password:
Re-type new password:
Adding password for user foo
$ cat .htpasswd
foo:$apr1$2/Dzi6od$Tpp/I/WL/iEEST20tcDbj/
ここでは、以下を指定しました。
- ファイル名
.htpasswd
- ユーザー名
foo
- パスワード
password
ウェブからこのファイルを読まれないように、このファイルはドキュメントルートの外に配置するか、適切なパーミションを設定しておきます。
参考
- htpasswd – Manage user files for basic authentication – Apache HTTP Server Version 2.4
- Password Formats – Apache HTTP Server Version 2.4
- [Apache-SVN] Contents of /apr/apr/trunk/crypto/apr_md5.c
(2) Apache の設定ファイルに認証するための記述を行う
ここでは、特定のディレクトリに対して Basic認証を掛ける場合を想定し、そのディレクトリ直下の .htaccess
ファイルに設定を記述します。
AuthType Basic
AuthName "{領域名}"
AuthUserFile "{パスワードファイルへのパス}"
Require valid-user
AuthType
とRequire
は上記のまま記述します。AuthName
とAuthUserFile
は、自分が決めた内容を記述します。
一例を示します。
AuthType Basic
AuthName "Basic Auth"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
今回のように.htaccess
ファイルを利用する場合は、Apache を再起動する必要はありません。
以上の設定を行うと、Basic認証が有効になります。
3. おわりに
認証しないと特定のウェブページが見られないようにしたい場合、Basic認証は手軽で便利です。但し、HTTPS を併用することを徹底しましょう。