====== Apache2.4 基本認証とダイジェスト認証 ====== Version 2.4.41 --- //[[http://www.y2sunlight.com|y2sunlight]] 2019-10-07// [[apache:top|Apacheに戻る]] 関連記事 * [[apache:2.4:setting|Apache2.4 Windows版の基本設定]] * [[apache:2.4:httpd.conf|Apache2.4 httpd.confの編集]] Appendix * Apache2.4 基本認証とダイジェスト認証 * [[apache:2.4:acd|Apache2.4 アクセス制御ディレクティブ]] ---- ===== httpd.confの設定 ===== 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サーバに設置する必要があります。パスワードファイルに含まれるパスワードは暗号化されていますが、クライアントからアクセスできないディレクトリに設置するか、またはファイルにアクセスできないように保護する必要があります。本編では後者の方法でファイルを保護する事とし、パスワードファイルに以下の名前を付ける事にします。 * .htpasswd --- 基本認証用のパスワードファイル * .htdigest --- ダイジェスト認証用のパスワードファイル この時、http.confの設定は以下のようになります。 Require all denied \\ ===== コマンドツールの準備 ===== 先に説明したように基本認証やダイジェスト認証を使用する場合、パスワードファイルを作成しなければなりません。しかし、パスワードは暗号化する必要があるのでエディタなどで作成するのは困難です。この時にApache2.4付属のコマンドツールを使用します。 * htpasswd --- 基本認証で使用するパスワードファイルを作成するコマンド * htdigest --- ダイジェスト認証で使用するパスワードファイルを作成するコマンド これらのコマンドツールは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)を示します。 sunlight:$apr1$1cm1Oh7w$AaXQm0RxzhgHjgB5xoGMM/ \\ ==== アクセス制御ファイル(.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)を示します。 sunlight:private:fbb7efbd7f81a3a81ce2ab0304f21247 \\ ==== アクセス制御ファイル(.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 \\