Tracでフォーム認証
Twitterを眺めていると、Tracの認証がログアウト出来ないとという話をよく見かけますが、AccountManagerプラグインを導入済みならば、AccountManagerプラグインのloginモジュールを使うと実現可能です。
以下は利用のための手順です。
※trunkのAccountManagerPluginを使うとハマるので、Stableのurlに訂正しました。
TracLightning3.1.1以前の3系及び、それ以外のTrac0.12環境の場合
1. 最新Stable版のAccountManagerプラグインをインストール
easy_install https://trac-hacks.org/svn/accountmanagerplugin/0.11
2. 最新版のXML-RPCプラグインを利用インストール
easy_install easy_install -Z -U http://trac-hacks.org/svn/xmlrpcplugin/trunk
3. 両プラグインを管理パネルもしくはtrac.iniを設定し利用可能にする。
4. AccountManagerプラグインとXML-RPCプラグインが動作することを確認する。
5. LoginModule(trac.web.auth)のチェックボックスをoffに変更。
6. AccountManagerのLoginModule(acct_mgr.web_ui)のチェックボックスがonになっていることを確認。
7. httpd.confのTracに関する認証部分を変更
tracのlogin関連のURLで認証するようになっている部分を、xmlrpc及びjsonrpcでのみ利用するように変更します。
#<LocationMatch "/[^/]+/login($|/)"> <LocationMatch "/[^/]+/login/(xmlrpc|rpc|jsonrpc)($|/)"> AuthType Digest AuthName trac AuthUserFile "C:\TracLight\projects\trac.htdigest" Require valid-user </LocationMatch>
8. Apacheを再起動し、"ログイン"をクリック
フォームが出て以後はログインログアウトが可能になります。
TracLightning3.1.2alpha2以降の場合
まだアルファ版ですがTracLightning3.1.2以降ではプラグインを最新化し、もう少し簡単にフォーム認証が利用出来るようになる予定です。
現在のTracLightningをお使いでフォーム認証を試して見たいという人は、TracLightning3.1.2alpha2をこちらからダウンロードをして試してみると良いと思います。*1
1. LoginModule(trac.web.auth)のチェックボックスをoffに変更。
2. AccountManagerのLoginModule(acct_mgr.web_ui)のチェックボックスがonになっていることを確認。
3. Apacheのhttpd.confの509行目辺りからの認証設定変更
xmlrpc及びjsonrpcでのみApacheの認証を利用するように変更します。
#<LocationMatch "/[^/]+/login($|/)"> <LocationMatch "/[^/]+/login/(xmlrpc|rpc|jsonrpc)($|/)"> AuthType Digest AuthName trac AuthUserFile "C:\TracLight\projects\trac.htdigest" Require valid-user </LocationMatch>
4. Apacheを再起動し、"ログイン"をクリック
以前に書いた不具合について
以前に『Trac Lightingでフォーム認証には問題がある』で書きましたが、TracLightning3.1.1以前に同梱されている、AccountManagerプラグインではdigest認証を利用したフォーム認証には不具合があります。またbasic認証を用いた場合でもXML-RPCが他のプラグインを組み合わせないと認証できない状態でした。
前述の通り、最新版のAccountManagerプラグインとXML-RPCプラグインのloginモジュールを利用すると問題が解消しフォーム認証が利用できます。
Trac 0.11での動作検証は行っていませんが、0.11では0.12と同じプラグインを使うことからプラグインを最新化することにより対処できるかもしれません。0.11で運用中の方やTracLightningの2系を利用中の方で試した方のご報告お待ちしてます。