Trac で OpenID を使う
Trac は標準で Basic 認証や Digest 認証に対応しているけど、これを OpenID 認証にしてみる。 ちょっと前までは OpenidPluginという Trac のプラグインがあったらしいけど、今はメンテされていないらしい。 代わりにAuthOpenIdPluginというプラグインが使える。 以下、簡単に手順のまとめ。OS は Mac OS X だけど、 Ubuntu とかでも同じようにいけると思う。
Trac のインストール
AuthOpenIdPlugin は Trac 0.11 のみに対応している。 んで、 Trac は依存ライブラリが多いので、 Port で一気に関連パッケージを入れちゃう。
$ sudo port install trac
これで Trac 0.10.4 と関連パッケージ (Python とか SQLite3 とか) がインストールされる。 Trac 本体はいらないので、すぐにアンインストール。
$ sudo port uninstall trac
ちょっと強引かなぁ。ちなみに ubuntu だと build-dep を使ったりする。 port にも似たような方法があるかも。
$ sudo apt-get build-dep trac
次に Trac のページから 0.11b1 をダウンロードする。 アーカイブを展開して、 setup.py でインストール。
$ sudo python setup.py build $ sudo python setup.py install
Python-OpenID ライブラリ
次は Python 用の OpenID ライブラリ。 これも setup.py を使うので、 Trac と同じ方法で OK 。
AuthOpenIdPlugin
Trac 用の OpenID 認証プラグイン。困ったことに、これは Mercurial とかいうソースコード管理ツールがないと取得できない。 最初は ports を使ってインストールしようと思ったけど、 Python のバージョンが 2.4 だった(入っているのは 2.5 )ので、公式サイトからバイナリを直接インストールした。 Mercurial という名前なのに、コマンドはなぜか hg なのね。 ダウンロードは以下のコマンド。なかなか clone を使えばいいことに気がつかなかった。
$ /usr/local/bin/hg clone http://hg.sandbox.lt/authopenid-plugin/ authopenid
setup.py を使って egg ファイルを生成。
$ python setup.py bdist_egg
これを Trac のディレクトリ (initenv で指定するところ) に存在する plugin ディレクトリにコピーする。
$ cp dist/TracAuthOpenId-0.1dev-py2.5.egg ~/trac/plugin
あとは trac.ini でモジュールを有効にして完了。
[components] trac.web.auth.* = disabled authopenid.* = enabled
これで Trac を起動すると、 "OpenID Login" というリンクが追加されている。 試してみたけど、はてなではログインできた。 coderepos.org はなぜか真っ白な画面になる。この時の URL は http://openid.coderepos.org/auth 。
問題
Trac を単体で使うならこれでいいんだけど、 Subversion と連携させようと思ったら結局パスワードが必要になっちゃうんだよねぇ。