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とかにも書いてもよい。

コメントする

メールアドレスが公開されることはありません。

PAGE TOP