ここのところ、SSOまわりを調査・検討しているけど、PALポータル(Jetspeed2も同じ)でOpenSSOの認証を使う仕組みを作って、PALにコミットしておいた。OpenSSO もまだ謎の部分が多いのだけど(設定がいろいろあって細かいところを理解するにはもっと時間が必要・・・)、とりあえず、動いた。やり方は、JBoss Portal がやっていることに近い(Liferay のやり方はいまいちな気がする)。コードは以下に置いた(リリース物はそのうち・・・)。
http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/pal-portal/trunk/components/palportal-sso/?root=pal
使い方
- OpenSSO をセットアップする
- palportal-sso-2.1.3_pal-1.0.3.jar と openssoclientsdk-1.0-b3.jar (openssoclientsdk.jar)を webapps/palportal/WEB-INF/lib/ にコピーする
- webapps/palportal/WEB-INF/web.xml を編集する
... <filter> <filter-name>OpenSSOFilter</filter-name> <filter-class>jp.sf.pal.portal.sso.opensso.OpenSSOFilter</filter-class> <init-param> <param-name>loginURL</param-name> <param-value>http://servername:8080/opensso</param-value> </init-param> </filter> ... <filter-mapping> <filter-name>OpenSSOFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ...
注意点
- ログインしていない状態でアクセスしたい場合は、filter のパラメータでprotectedPathsを指定する。/login/proxy などを指定すると、OpenSSOの認証後にそのページが表示されるので別途サーブレットを用意する必要がある(何か良い方法が思いついたら手を加えるかも)。
JOSSOやCASにしても、同じようにやればいいのだと思うけど、環境を作るのが面倒なので、またそのうち考えよっと。というわけで、Jetspeed2 でもそれらの SSO はできる(と思う)ということで。