2008年 12月 11日 木曜日
OpenSSO を Glassfish V3(Prelude) に配備するための手順
Glassfish の最新版、"V3 Prelude" がリリースされてますが、
OpenSSO を V3 Prelude に配備する際にはワークアラウンドを施す必要があるようですね。
Installing OpenSSO Enterprise 8.0 on GlassFish v3 Prelude Release
実際に自分でも OpenSolaris 2008/11 上で配備して確かめてみました。
1. Glassfish V3 のインストール
- まずは、Glassfish V3 をダウンロード。
- JAVA_HOME を設定したあと、インストーラを起動したら日本語が□で表示されてしまったので、
以下の workaround を実行。
# mkdir jdk1.6.0_10/jre/lib/fonts/fallback
# ln -s /usr/X11/lib/X11/fonts/TrueType/ipafont/ipagui.ttf jdk1.6.0_10/jre/lib/fonts/fallback
再度インストーラを起動すると、日本語が表示されました。
- ライセンスに同意して、インストールディレクトリを指定し、管理の設定画面でユーザー名とパスワードを指定して、インストールを実行。
- インストール終了後、"asadmin start-domain" でサーバーを実行し、インスタンスが動いていることを確認。
これで、Glassfish のインストールが完了したので、次は OpenSSO を Glassfish に配備します。
2. OpenSSO の配備と設定
- OpenSSO Enterprise 8.0 をダウンロードして、zip ファイルから opensso.war を抽出。
# unzip opensso_enterprise_80.zip opensso/deployable-war/opensso.war
- Glassfish の管理コンソールにログインし、opensso.war を配備。
- 配備が完了したら、左の区画で「アプリケーションサーバー」をクリック。
- 右の区画で、「JVM 設定」->「JVM オプション」をクリック。
- -client は、-server に、-Xmx512m は -Xmx1024m に変更し保存。
- Glassfish を再起動。
- OpenSSO を配備した URL にアクセスし、設定を行う。
- 設定が完了したら、「ログインに進む」をクリック。
- ログインページで、amadmin でログインしてみると・・・・
あらら??リダイレクトがうまくいかずに、ログインページに戻ってしまいます。
これは、OpenSSO が値に"="(イコール)を含んだ cookie を設定しようとするのに対して、Glassfish V3 が、その cookie の値を正しく処理できないために起こる問題です。
(= のところで値を切ってしまう)
これは、Glassfish の課題
6875として登録されており、まだ修正されていませんが、以下のワークアラウンドでこの問題を回避することができます。
回避方法
- Glassfish の管理コンソールにログインし、左の区画で「アプリケーションサーバー」をクリック。
- 右の区画で、「JVM 設定」->「JVM オプション」をクリック。
- 「JVM オプションを追加」をクリック。
- -Dcom.iplanet.am.cookie.c66Encode=true を値に入れて保存。
Glassfish を再起動して、もう一度 amadmin でログインしてみると・・・・・
今度は、無事ログインできました。
確かに、上のワークアラウンドを適用することで Glassfish V3 上で OpenSSO を利用できます。
なお、users@opensso.dev.java.net メーリングリストでのやりとりによれば、
このワークアラウンドの使用に関して1点注意事項があるそうで、
OpenSSO とともに J2EE エージェントを使用する場合は、このワークアラウンドは使用してはいけないとのことです。
ご注意ください。(J2EE エージェントを使う場合は、Glassfish V3 以外の web コンテナに配備した方がよいということですね。)
Posted by hanaki
( 12月 11日 2008年, 06:06:18 午後 JST )
Permalink
Trackback URL: http://blogs.sun.com/hanaki/entry/opensso_%E3%82%92_glassfish_v3_prelude