メインメニュー
XAMPP アレンジ
IED
WSL2
-
道具箱
リポジトリ編
フレームワーク編
公開ソフトウェア
メタ
リンク
- PHP ライブラリ
- PHP 言語
apache:2.4:auth目次
Apache2.4 基本認証とダイジェスト認証
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サーバに設置する必要があります。パスワードファイルに含まれるパスワードは暗号化されていますが、クライアントからアクセスできないディレクトリに設置するか、またはファイルにアクセスできないように保護する必要があります。本編では後者の方法でファイルを保護する事とし、パスワードファイルに以下の名前を付ける事にします。
- .htpasswd — 基本認証用のパスワードファイル
- .htdigest — ダイジェスト認証用のパスワードファイル
この時、http.confの設定は以下のようになります。
- httpd.conf
<Files ".ht*"> Require all denied </Files>
コマンドツールの準備
先に説明したように基本認証やダイジェスト認証を使用する場合、パスワードファイルを作成しなければなりません。しかし、パスワードは暗号化する必要があるのでエディタなどで作成するのは困難です。この時に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)を示します。
- .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
apache/2.4/auth.txt · 最終更新: 2020/11/20 09:42 by y2sunlight
コメント