CouchDB+mod_proxyでユーザー認証
Left Handle DBではCouchDBをデータベースエンジンとして利用することにしています。
現時点ではCouchDBにはユーザー認証がないため、apacheのmod_proxyを使ってユーザー認証を追加するテストをしてみました。
デフォルトのポート5984で動いているCouchDBに対して、proxy経由でアクセスする設定です。
<virtualhost>
ServerAdmin root@home.ryo.com
ServerName api.home.ryo.com
ErrorLog logs/api.home.ryo.com-error_log
CustomLog logs/api.home.ryo.com-access_log combined
<proxy>
AuthType Basic
AuthName “Authorization Realm (same as Trac)”
AuthUserFile /home/webuser/.htpasswd
Require valid-user
Order allow,deny
Allow from all
AddDefaultCharset off
</proxy>
ProxyPass / http://192.168.1.9:5984/
ProxyPassReverse / http://192.168.1.9:5984/
<VirtualHost>
たったこれだけで、
http://192.168.1.9:5984/
で動くCouchDBに対して
http://api.home.ryo.com/
というURLでアクセスが可能になるわけです。
LeftHandle DBとして公開するときには、認証モジュールをmod_auth_pgsqlにして、LeftHandle DBのユーザー管理テーブルを参照する形にすればなんとかなりそうです。
あ、テスト用ですが、自宅サーバーでapi.home.ryo.comというホスト名で実際に動いてますし、ウチのLANのアドレスも出てしまってますが、アタックしないでね ![]()

mod_proxy経由だとtest suitesの一部でエラーが出る件を追っかけて、ヘッダにcharsetが付加されてしまっていることが発覚。
proxyディレクティブに
を追加しました。
AddDefaultCharsetってのはXSS的には重要なんですが、proxyでなく元サーバー側でちゃんと対応しておくべきだな、とと。
ryo said this on 2008 年 10 月 31 日 at 4:55 PM