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. Apachehttpd.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系を利用中の方で試した方のご報告お待ちしてます。

*1:リポジトリの構成を変える可能性があるためアルファ版扱いですが、プラグインの最新化が中心なので比較的安定しています。