SSOProxyのリポジトリ

github弱者な私なので、それを克服するためにSSO Proxyのコードをgithubに置いています。
https://github.com/marevol/sso-proxy
過去のSSO ProxyはJetspeed2に結構依存する部分があったので、それを除いて Fess がフォーム認証のサイトをクロールできるようにするため観点でリファクタリングをしてみました。まぁ、Fessに限らず、全文検索とかでクロールしたいときにフォーム認証サイトに適用したいときに利用できるかと。そんなわけで、Fessとは別にしてあります。現状では、demo.redmine.orgのサイトをGETでやり取りするところは表示できると思います。昔のredmineではPOSTもできたような気がしたのだけど(3年前くらいの話…)、今のやつではできないので対応する必要がある感じ。
というような感じですが、引き続き改善していくと思います。興味があればどうそ。

SSO Proxyを再開

SSO Proxyを再開してみる。以前はポータル向けにシングルサインオンを実現するために作っていたけど、今回はリファクタリングしてFessでフォーム認証が必要なサイトをクロールするために利用しようかと思う。Fessに組み込んでしまえば良いかと思ったけど、別にFess以外でも使いそうな気もするので、SSO Proxyのまま行こうと思う。でも、ポータル系のコードは抜くかも。そんな感じで、コードを見なおしているけど、3年近く時間が過ぎているのもあり、全く仕組みを覚えていない。ざっくりとした感じでは、ProxyConfigがHostConfigを持ち、HostConfingがAuthConfigを持ち、AuthConfigは認証ページがリクエストされた場合だけ取得して認証処理を行い、nullが返ってくれば普通にリバースプロキシとして処理する。アクセス自体はAccessManagerが管理しているらしい。うーん、〜Configクラスをいろいろと作った気がするけど、時間が経ちすぎていて覚えていないな。あとは、ファイルアップロードもサポートしようとして途中になっているみたい。整理できるところはどんどん片付けたいな…。そんな感じで、時間があるときにどんどん進めよう。

クッキーの受け入れ

OSC準備のため、SSO Proxy と WordPress の組み合わせのシングルサインオンを試していたのだけど、ちょっとはまった。SSO Proxy は httpclient 3.1 を使っているのだけど、どうも、httpclientがクッキーの受け入れに関して、普通のブラウザと異なる動きをしているように思う。現象としては、たとえば、/ にアクセスして、path=/hoge/ にクッキーをセットしようとした場合、ブラウザは受け入れるけど、httpclient は却下する。RFC 2965 の 3.3.2 Rejecting Cookies によると、The value for the Path attribute is not a prefix of the request-URI.って言っている。これからすると、httpclient が正しいようにも思える。httpclientのコード的には、CookieSpecBaseのvalidateなのだけど、この動きをされると、どうすることもできん。httpclientはいくつかクッキーポリシーがあるけど、既存のものでは対応できないみたいだから、新しいクッキーポリシーを加えて、対応してみた。