at posts/single.html

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 と連携させようと思ったら結局パスワードが必要になっちゃうんだよねぇ。

関連する日記