Apacheでのフォーム認証を実現するmod_auth_form version 0.0.3をリリース。いくつかのバグ改修と、パスワードのチェックロジックを簡単に差し替えられるよう修正が入りました。
改修した問題
未公開だったversion 0.0.2を含めて、下記の問題を修正しました。- 独自の認証画面を設定した場合にこっそりバッファオーバランする(駄目スギ)
- Cookieにpathを指定していないため、複数ディレクトリで個別に認証設定できない
- Set-Cookieヘッダの値をクオートしていないため、Cookieを受け付けないブラウザがある
プラグイン機能
任意の認証情報ストレージとチェックルールに変更できるよう、パスワード検証処理をモジュールの本体から抜き出しました。標準のパスワードファイルを用いた検証処理をデフォルトの実装としますが、下記のような手順で、例えばLDAPやRDBMSなどにアクセスしてユーザ認証を行うよう拡張することができます。まず、独自の認証処理を実装したソースコードmy_validator.cを作成します。my_validator.cでは下記のプロトタイプの関数を実装します。
int maf_validate_password(request_rec *r, const char *user, const char *passwd);maf_validate_password関数はApacheのrequest_rec構造体と、ブラウザからpostされたユーザ名(user)とパスワード(passwd)を引数にモジュール本体から呼び出されます。与えられた情報をもとにユーザ認証の可否を決定した上で、認証する場合はAUTH_OK、認証しない場合はAUTH_FAILUREをreturnします。これだけ。
例えばユーザ名は何でもOKで、パスワードが12文字以上なら認証OKとかいう酷いロジックも、下記のように記述して実現できます。
#include "httpd.h" #include "validate.h" int maf_validate_password(request_rec *r, const char *u, const char *passwd) { if (pw != NULL && strlen(passwd) >= 12) return AUTH_OK; else return AUTH_FAILURE; }詳しくはinclude/validate.hや、標準のパスワードファイルによる認証処理を実装しているvalidate.c、またはサンプルとして添付しているvalidator/validate_equal.cを参照してください。
ファイルを用意したならばconfigureスクリプトに--with-validatorオプションを付与して実行します。--with-validatorオプションには下記のように用意したmy_validator.cのパスを与えます。
% ./configure --with-validator=my_validator.cあとはmake; make installするだけです。
ダウンロード
mod_auth_form-0.0.3.tar.gz
ライセンスについて
えーっと何気にご利用頂いております mod_auth_form なんですが、これライセンス未定義なんですけどご存知でしたか?意図的に未定義な訳ではなくて、決めかねたまま公開しちゃっただけなので悪意は有りませんのでご安心を(ホントか)さてどうしたもんか。ウヒ。 ←そこっ