J2EE エージェント全般に関するトラブルシューティングガイド
原文:2009年1月20日時点の J2EEAgentTrouble
このページおよびリンク先のページでは、概ね、原文の内容をそのまま訳しつつ、一部、原文の内容が古い(手順例で使用しているビルドが古いなど)場合などは、適宜最新の情報に書き直しているものもあります。逆に、原文が新しく更新されていても、それに完全に追従できていない場合もあります。 |
Sun OpenSSO Enterprise 8.0 の公式のマニュアルは、docs.sun.com の以下のサイトでご覧になれます。 |
問題と解決方法の一覧および他のFAQページへのリンク
- ホスト名には FQDN 形式を使用する。localhost や、127.0.0.0 のような IP アドレス形式を用いてはいけない
- OpenSSO にログイン後も、リダイレクトエラーやループ(ブラウザのリダイレクトエラーメッセージが表示される)が発生し、保護対象のアプリケーションにアクセスできずに、OpenSSO コンソールのユーザー編集ページが表示される
他のFAQページへのリンク:
- Glassfish 用の J2EE エージェントに関するトラブルシューティングガイド
このページでは、Glassfish 用の J2EE エージェントに関するトラブルの例とその解決方法を記載してます。基本的には、Glassfish 用ですが、他のサーバー用のエージェントのトラブルを解決する上でも何らかのヒントになるかもしれません。
ホスト名には FQDN 形式を使用する。localhost や、127.0.0.0 のような IP アドレス形式を用いてはいけない
解決方法:
Windows マシンをお使いの方は(もしくは、Unix をお使いの方でも)、以下の手順が参考になると思います。
localhost の別名を作成する:
開発者として Windows を使用していて、アプリケーションサーバーにアプリケーションを配備して使用する場合、普段は http://localhost:8080 という形でアクセスしていることが多いかもしれませんが、OpenSSO とポリシーエージェントを使用する際には、インストールするマシンのホスト名について、FQDN 形式での指定が必要となります。
"localhost"や、"test1" といったシンプルな名前を使うことはできません。
そこで解決策としては、以下に示すような手順で、localhost の別名を FQDN 形式で作成します。
(ここでは、Windows 環境を例に示します。)
--C:\WINDOWS\system32\drivers\etc に移動し、テキストエディタで hosts ファイルを開きます。
--hosts ファイルには、"127.0.0.1 localhost" と書かれた行があります。
この行を修正して、localhost に対する別名を FQDN 形式で定義します。
例えば、my.test.domain.com という名前を別名として定義したい場合には、
"127.0.0.1 localhost my.test.domain.com" のように修正します。
OpenSSO やエージェントのインストールでは、ホスト名が参照されるので、上記の手順は、それらをインストールする前に行ってください。もし、すでに OpenSSO をインストールしてしまっている場合は、上記の手順を行ったあとで、OpenSSO をアンインストール(配備解除)し、再度配備し直してください。
この手順後、ローカルで動いているアプリケーションサーバー上で実行されるアプリケーションにアクセスすると、 URL は、http://localhost:8080/myapplication ではなく、http://my.test.domain.com:8080/myapplication といった風になります。
OpenSSO にログイン後も、リダイレクトエラーやループ(ブラウザのリダイレクトエラーメッセージが表示される)が発生し、保護対象のアプリケーションにアクセスできずに、OpenSSO コンソールのユーザー編集ページが表示される
この問題は常に発生するわけではなく、ランダムに偶発的に発生します。また、この問題は、ポリシーエージェント 3.0 以降と OpenSSO 8 以降の両方を組み合わせてお使いの場合は起こりません。 |
問題:
エージェントと OpenSSO サーバーを同じマシンで動かしていて、エージェントで保護されているアプリケーションが配備されている状況で、保護されているページにアクセスすると、OpenSSO のログインページにリダイレクトされますが、そこで適切なユーザー名とパスワードでログインしても、保護されているページが表示されずに、エラーが表示されるか(ブラウザによっては、リダイレクトのエラーが発生したことを示すメッセージを表示します。)、OpenSSO コンソールのユーザーの編集ページが表示されます。
ここで、ブラウザの URL ボックスに、OpenSSO コンソールの URL (http://hostname:port/opensso) を入力してアクセスすると、ユーザーの編集ページへとリダイレクトされ、すでに正常にログインできていることが確認できますが、何らかの理由により、エージェントで保護されているページにリダイレクトされません。
解決方法:
- Access Manager をお使いの場合:
AMConfig.properties を編集して、以下のプロパティーの値を変更します。(デフォルトでは false になっています。)com.iplanet.am.cookie.encode=true
変更後、Access Manager を配備しているサーバーを再起動します。
- OpenSSO をお使いの場合:
- amAdmin で、コンソールにログインし、「設定」タブをクリックします。
- 次に、「サーバーおよびサイト」をクリックし、サーバーリストから変更したいサーバーの URL をクリックします。
- 次に、「セキュリティ」タブをクリックし、「継承設定値」をクリックします。
- サーバープロパティー継承設定ページで一覧から、「Cookie 値のエンコード」のチェックボックスをオフにして、保存します。
- 保存したら、「サーバープロファイルへ戻る」をクリックし、「セキュリティ」タブへと戻ります。
- Cookie のセクションで、「Cookie 値のエンコード」の横に「はい」というメッセージとともにチェックボックスが表示されているので、これを有効にして、「保存」をクリックします。
これにより、com.iplanet.am.cookie.encode の値が true となります。
別の解決方法:
上記の方法とは別に、エージェント側の設定を変更することもできます。
AMAgent.properties ファイルで次のようにプロパティの値を変更します。
com.sun.identity.agents.config.sso.decode=false

