Apache 2.2.x には、さまざまな認証モジュールがある。一般的なのはmod_authn_fileを使用して、テキストファイルで管理する方法だろう。
テキストファイルを利用した基本認証は、複数のモジュールを経由して行われる。
- AuthType Basic により mod_auth_basic が起動
- AuthBasicProvider file により mod_authn_file が起動し、AuthUserFile ディレクティブに指定されたファイルを読む
- Require の定義に従って、mod_authz_user が承認
テキストファイルを使ってベーシック認証を行っている場合、一般的には以下のような設定を行う。
検証環境は、Cent OS 6.4 と Apache 2.2.15、MySQL 5.1.69だ。
#基本認証 LoadModule auth_basic_module modules/mod_auth_basic.so #ホスト名/IPアドレスによる制御 LoadModule authz_host_module modules/mod_authz_host.so #ユーザー名による承認 LoadModule authz_user_module modules/mod_authz_user.so #グループ名による承認 LoadModule authz_groupfile_module modules/mod_authz_groupfile.so #テキストファイルを用いたユーザ認証 LoadModule authn_file_module modules/mod_authn_file.so ... <Directory "/var/www/html"> Options FollowSymLinks AllowOverride None AuthType Basic AuthBasicProvider file AuthUserFile /etc/httpd/conf/passwd AuthGroupFile /dev/null AuthName "Authentication Area" Require valid-user Order allow,deny Allow from all </Directory>
「/etc/httpd/conf/passwd」ファイルは、ユーザー ID とパスワードの一覧を格納したファイルで、htpasswd で生成する。
htpasswd -c /etc/httpd/conf/passwd user1
ユーザーの追加や削除もできるため、ユーザー数が少ない場合はファイルを利用した方が楽だろう。逆にユーザー数が増えると、ユーザーの検索に時間がかかるようになり遅くなる。
ピンバック: Apache 2.2.x でベーシック認証(2) ~ MySQL を利用する~ | UB Lab.