github弱者な私なので、それを克服するためにSSO Proxyのコードをgithubに置いています。
https://github.com/marevol/sso-proxy
過去のSSO ProxyはJetspeed2に結構依存する部分があったので、それを除いて Fess がフォーム認証のサイトをクロールできるようにするため観点でリファクタリングをしてみました。まぁ、Fessに限らず、全文検索とかでクロールしたいときにフォーム認証サイトに適用したいときに利用できるかと。そんなわけで、Fessとは別にしてあります。現状では、demo.redmine.orgのサイトをGETでやり取りするところは表示できると思います。昔のredmineではPOSTもできたような気がしたのだけど(3年前くらいの話…)、今のやつではできないので対応する必要がある感じ。
というような感じですが、引き続き改善していくと思います。興味があればどうそ。
カテゴリー: SSOProxy
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はいくつかクッキーポリシーがあるけど、既存のものでは対応できないみたいだから、新しいクッキーポリシーを加えて、対応してみた。
OSCの準備一段落
やっとこ、準備作業が一段楽した(と思う)。デモの内容としては、
- iGoogle みたいなポータルを作る
- PALポータルとSSO Proxyでシングルサインオン環境
- SAStrutsなポートレットをHOTdeployでさくさく開発(Flashでの再生)
っていうのを予定してましたが、予定通りにやりたいと思います。1 は、Googleガジェットポートレットと Netvibesウィジェットポートレットで、iGoogle みたいじゃないですか? 的な感じ(まぁ、ページにそれらを置いただけの感じだけど)。2はPALポータルとSSO Proxyをセットアップした状態で、WordPress に対して、シングルサインオンします(WordPressを選んだのは、認証があるシステムを新たに作るのが面倒なので、手元にあった環境を利用しただけ)。3 は昨日、作った Flash を再生予定。1 と 2 はネットワークに接続する必要があるので、現地のネットワーク環境がどうなっているのかとかも、ちょっと気になってます(無線LANがあったみたいだけど)。という感じで、今回も時間内(45分)に収まるようにがんばろっと。
テスト環境
現在、SSO Proxy のテストにサイボウズ Office7 を利用している(インストールも楽だったし)。認証とか特に問題ない感じで普通に利用できている(と思う)。まぁ、Shift_JIS なんで、nekohtml が を \u00a0 に変換して文字化けしてしまって、nekohtml のオプションで何とかなる話ではないことがわかり、nekohtml のプロパティを上書きしたりと、変な問題があったりしたけど・・・。まだ、SSO Proxy がマルチパートのフォーム送信をサポートしてないから、それをやれば、動作のベースになる部分は一段落だろう。サイボウズもくせがあるので、普通の J2EE アプリで確認するより、テスト環境に利用する分にはちょうど良い気がしている。SSO Proxy をリリースするにあたって、日本向けにはそれの設定方法で紹介すればいいと思うのだけど、海外向けにはどうしよう・・・。Hudson あたりに SSO するのが説明するのにわかりやすいかな。グループウェアっぽいので、インストールが簡単で、認知度が高いものがあると良いのだけど。