« | »

2008年11月27日

apache1.3にmysql認証を追加

apacheでのユーザー認証と言えばBasic認証かDigest認証やけど、仮想ユーザー統一の一環として、
ベーシック認証の問合せ先をパスワードファイルだけではなく、mysqlも参照出来るようにしてみた。
作業としてはapache1系mod_auth_mysqlを追加するという事になる。

CFLAGS="-native -mt -fast" ./configure --enable-rule=SHARED_CORE --enable-module=so --prefix=/usr/local/apache --enable-module=auth_digest --enable-module=digest

ってな感じコンパイルされているapacheに、モジュールとしてmod_auth_mysqlを組み込む
mod_auth_mysqlのソースディレクトリで、

/uasr/local/apache/bin/apxs -c -L/usr/local/mysql/lib/mysql -R/usr/local/mysql/lib/mysql -I/usr/local/mysql/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c

と直接mod_auth_mysql.cをコンパイルするとmod_auth_mysql.soが生成されるので、
sudo /uasr/local/apache/bin/apxs -i mod_auth_mysql.so
でファイルがコピーされる。


confには

LoadModule mysql_auth_module libexec/mod_auth_mysql.so
AddModule mod_auth_mysql.c
#モジュールを読み込む
<Directory /export/web/hogehoge >
AuthMySQLEnable On
 AuthName "enter username and password"
 AuthType Basic
 AuthMySQLHost ホスト名
 AuthMySQLDB DB名
 AuthMySQLUser 接続ユーザー
 AuthMySQLPassword パスワード
 AuthMySQLUserTable テーブル
 AuthMySQLNameField username
 AuthMySQLPasswordField password
 AuthMySQLPwEncryption crypt
 AuthMySQLUserCondition mailuse='1'
 require valid-user
#SELECT username,password FROM DB名.テーブル WHERE mailuse='1';
#と展開され、
#入力されたユーザー名とパスワードと照合される。
</directory>

と書けば/export/web/hogehogeはmysqlによるbaseic認証となる。
当然、AllowOverrideでAuthConfigが許可されているディレクトリでは、.htaccessとかにも書いてもよい。

Trackback URL

Comment & Trackback

No comments.

Comment feed

Comment





XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>