Apache2では基本認証やダイジェスト認証が使用できます。基本認証にはmod_auth_basicモジュールが、ダイジェスト認証にはmod_auth_digestモジュールが必要になります。
LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule auth_digest_module modules/mod_auth_digest.so
基本認証やダイジェスト認証を使用する場合、パスワードファイルを作成し、Webサーバに設置する必要があります。パスワードファイルに含まれるパスワードは暗号化されていますが、クライアントからアクセスできないディレクトリに設置するか、またはファイルにアクセスできないように保護する必要があります。本編では後者の方法でファイルを保護する事とし、パスワードファイルに以下の名前を付ける事にします。
この時、http.confの設定は以下のようになります。
<Files ".ht*"> Require all denied </Files>
先に説明したように基本認証やダイジェスト認証を使用する場合、パスワードファイルを作成しなければなりません。しかし、パスワードは暗号化する必要があるのでエディタなどで作成するのは困難です。この時にApache2.4付属のコマンドツールを使用します。
これらのコマンドツールはApache2インストールフォルダ下のbinの中にあります。本編では以下の場所です。
D:\usr\xampp7.2.22\apache\bin
この場所を環境変数PATHに追加しておくと便利です。
基本認証は一番簡単な認証方式ですが、ブラウザで入力されたパスワードが平文でサーバに送信されます。但し、サーバに設置されるパスワードファイルの中ではパスワードはMD5で暗号化されています。
htpasswdコマンドを使ってパスワードファイル(.htpasswd)を作成します。まず、パスワードファイルを新規作成しユーザsunlightを作ります。ファイルの新規作成はオプション-cで指定します。
D:\usr\workspace3\sample\auth>htpasswd -c .htpasswd sunlight New password: ******** Re-type new password: ******** Adding password for user sunlight
出来上がったパスワードファイル(.htpasswd)を示します。
sunlight:$apr1$1cm1Oh7w$AaXQm0RxzhgHjgB5xoGMM/
本編では、.htaccessを使って基本認証の設定を行います。
AuthType Basic AuthName "Please Enter Your Password" AuthUserFile "D:/usr/workspace3/sample/auth/.htpasswd" Require valid-user
ディレクディブ | 説明 |
---|---|
AuthType | 認証タイプを指定。基本認証:Basic、ダイジェスト認証:Digest |
AuthName | 基本認証ではユーザ認証の際にWebブラウザのダイアログに表示されるメッセージを設定。 |
AuthUserFile | パスワードファイル(.htpasswd)へのパスを設定。 |
Require | 'valid-user'を指定する事でパスワードファイルに記載された全ユーザに対してディレクトリへのアクセスを許可。 |
各ディレクディブの詳細は以下を参照して下さい。
http://httpd.apache.org/docs/2.4/howto/auth.html
ダイジェスト認証は基本認証と異なりパスワードが平文で送信される事はありません。ブラウザは、パスワード、ユーザ名、時刻等のデータからMD5と呼ばれるアリゴリズムを使ってダイジェスト値を計算し、この値がユーザ認証に利用されます。また、ダイジェスト認証では、Realmと呼ばれる名前を使用して認証領域を識別します。
htdigestコマンドを使ってパスワードファイル(.htdigest)を作成します。認証領域(realm)には'private'と言う名前を指定します。まず、パスワードファイルを新規作成しユーザsunlightを作ります。ファイルの新規作成はオプション-cで指定します。
D:\usr\workspace3\sample\auth>htdigest -c .htdigest private sunlight Adding password for sunlight in realm private. New password: ******** Re-type new password: ********
出来上がったパスワードファイル(.htdigest)を示します。
sunlight:private:fbb7efbd7f81a3a81ce2ab0304f21247
本編では、.htaccessを使ってダイジェスト認証の設定を行います。
AuthType Digest AuthName "private" AuthUserFile "D:/usr/workspace3/sample/auth/.htdigest" Require valid-user
ディレクディブ | 説明 |
---|---|
AuthType | 認証タイプを指定。基本認証:Basic、ダイジェスト認証:Digest |
AuthName | ダイジェスト認証では認証領域(realm)を設定。 |
AuthUserFile | パスワードファイル(.htdigest)へのパスを設定。 |
Require | 'valid-user'を指定する事でパスワードファイルに記載された全ユーザに対してディレクトリへのアクセスを許可。 |
各ディレクディブの詳細は以下を参照して下さい。
http://httpd.apache.org/docs/2.4/howto/auth.html