2008-04-10
■mod_auth_openid を使ってみる
Apache で OpenID 認証を行う mod_auth_openid を試してみた。
インストールする OS は CentOS-4 (多分 5の方が楽)。
まず C++ で書かれた OpenID ライブラリ libopkele をインストール……するのだけど、その前に pkg-config で libpcre を扱えるように、libpcre.pc を用意 (これは CentOS-5 だと libpcre のパッケージに入ってる)。
/usr/lib/pkgconfig/libpcre.pc
# Package Information for pkg-config
prefix=/usr
exec_prefix=/usr
libdir=/usr/lib
includedir=/usr/include/pcre
Name: libpcre
Description: PCRE - Perl compatible regular expressions C library
Version: 4.5
Libs: -L${libdir} -lpcre
Cflags: -I${includedir}
libopkele は野良ビルドで
$ wget http://kin.klever.net/dist/libopkele-0.3.2.tar.gz $ tar zxvf libopkele-0.3.2.tar.gz $ cd libopkele-0.3.2 $ ./configure $ make # make install
続いて mod_auth_openid を svn からチェックアウト。trunk には configure が含まれていなかったので、少し前の tags/mod_auth_openid-0.2 を使ってみた。
$ svn co https://svn.butterfat.net/public/mod_auth_openid/tags/mod_auth_openid-0.2 mod_auth_openid $ cd mod_auth_openid $ ./configure $ make # make install
httpd.conf には以下の行が追加されている。
LoadModule authopenid_module modules/mod_auth_openid.so
とりあえず
<Location /openid> AuthOpenIDEnabled On </Location>
のみ設定して httpd restart.
/openid にアクセスすると、以下のような認証画面が出る。この画面は AuthOpenIDLoginPage ディレクティブで変更可能(だそうだが未確認)。
ここで OpenID URL を入力して認証を通れば、環境変数 REMOTE_USER に Identity (はてなの場合だと http://www.hatena.ne.jp/**** ) が設定された状態でページが表示される、という具合。
認証を通った後は Cookie ベースでのセッション管理が行われて、セッション情報は Berkeley DB に保存される実装になっている。
ということで、とりあえず認証 (Authentication) はできたのだけど、認証を通ったユーザに対してユーザ別のアクセス制限ができない。このユーザとこのユーザだけは許可……みたいなのが。
AuthOpenIDTrusted と AuthOpenIDDistrusted で OpenID のサーバ単位で許可不許可は設定できるのだけど、Identity (ユーザ名に相当するURL) に対してどうこう、というのが出来ないみたい。
というのは、mod_auth_openid は ap_hook_handler で動作していて、他の Apache の認証機構が働いた「後」に実行されるかららしい。
require user http://example.com/foo
とか、mod_rewrite を使って
RerwriteCond %{REMOTE_USER} http://example.com/foo
とかも試してみたのだが、だめ。rewrite の時点でも REMOTE_USER は未設定。
認証後、スクリプトを動かして REMOTE_USER を使える場合はいいんだけど、単なる静的コンテンツには使いづらい、という現状のようで。
- 346 http://labs.topicmaker.com/~fujiwara/s.html
- 63 http://www.stumbleupon.com/refer.php?url=http://d.hatena.ne.jp/sfujiwara/20080410/1207836191
- 43 http://reader.livedoor.com/reader/
- 36 http://d.hatena.ne.jp/
- 32 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=Rk9&q=macbook+time+maschine&btnG=検索&lr=lang_ja
- 29 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGIH_jaJP228JP229&q=thickbox.js+youtube
- 21 http://b.hatena.ne.jp/hotentry?cname=elec
- 20 http://www.google.co.jp/search?sourceid=navclient&aq=t&hl=ja&ie=UTF-8&rls=GGLG,GGLG:2005-52,GGLG:ja&q=VISTA+プロトコルエラー
- 19 http://b.hatena.ne.jp/
- 18 http://b.hatena.ne.jp/entrylist?sort=hot

