目次

Apache2.4 基本認証とダイジェスト認証

Version 2.4.41

y2sunlight 2019-10-07

Apacheに戻る

関連記事

Appendix


httpd.confの設定

Apache2では基本認証やダイジェスト認証が使用できます。基本認証にはmod_auth_basicモジュールが、ダイジェスト認証にはmod_auth_digestモジュールが必要になります。

httpd.conf
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so

基本認証やダイジェスト認証を使用する場合、パスワードファイルを作成し、Webサーバに設置する必要があります。パスワードファイルに含まれるパスワードは暗号化されていますが、クライアントからアクセスできないディレクトリに設置するか、またはファイルにアクセスできないように保護する必要があります。本編では後者の方法でファイルを保護する事とし、パスワードファイルに以下の名前を付ける事にします。

この時、http.confの設定は以下のようになります。

httpd.conf
<Files ".ht*">
    Require all denied
</Files>


コマンドツールの準備

先に説明したように基本認証やダイジェスト認証を使用する場合、パスワードファイルを作成しなければなりません。しかし、パスワードは暗号化する必要があるのでエディタなどで作成するのは困難です。この時にApache2.4付属のコマンドツールを使用します。

これらのコマンドツールはApache2インストールフォルダ下のbinの中にあります。本編では以下の場所です。

D:\usr\xampp7.2.22\apache\bin

この場所を環境変数PATHに追加しておくと便利です。


基本認証

基本認証は一番簡単な認証方式ですが、ブラウザで入力されたパスワードが平文でサーバに送信されます。但し、サーバに設置されるパスワードファイルの中ではパスワードはMD5で暗号化されています。

パスワードファイル(.htpasswd)の作成

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)を示します。

.htpasswd
sunlight:$apr1$1cm1Oh7w$AaXQm0RxzhgHjgB5xoGMM/


アクセス制御ファイル(.htaccess)の設置

本編では、.htaccessを使って基本認証の設定を行います。

.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コマンドを使ってパスワードファイル(.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)を示します。

.htdigest
sunlight:private:fbb7efbd7f81a3a81ce2ab0304f21247


アクセス制御ファイル(.htaccess)の設置

本編では、.htaccessを使ってダイジェスト認証の設定を行います。

.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