0

アプリケーションの認証に OpenAM を使用しています。次の URL を使用してアプリにアクセスします。

http://my.company.com/appfolder/appservlet?lang=EN&user=test

最初のアクセスで、OpenAM エージェントは URL をキャッチし、このリダイレクト URL を使用してブラウザーを認証ページにリダイレクトします。

...openam/UI/Login?goto=http%3A%2F%2Fmy.company.com%3A8080%2Fappfolder

正しい認証の後、最終的に次の URL にリダイレクトされます。

http://my.company.com/appfolder

これは、goto パラメータで参照される URL であるため、ロジックです。ただし、元のものと同じではありません。サーブレットとカスタム パラメータ (lang と user) がありません。

リダイレクト後にサーブレットとパラメーターを保持するようにエージェントを構成する方法はありますか?

4

2 に答える 2

0

ご回答有難うございます。以前のコメントで述べたように、新しいポリシーを追加しても問題は解決しません。実際、ポリシーが適用される前に動作する J2EE エージェントによってパラメーターが生成されるため、ポリシーが問題をどのように解決できるかはわかりませんgoto(私の知る限り、間違っている可能性があります)。

とにかく、J2EE エージェントを再コンパイルすることで問題を解決できましagent.jarた。forgerock で入手できる v3.0.3 に基づいて新しいものを構築しました。AmFilterRequestContext.class次に、ここで入手可能なソースに基づいて構築された新しいもの に置き換えました: http://www.docjar.com/html/api/com/sun/identity/agents/filter/AmFilterRequestContext.java.html

この新しいエージェントを使用すると、goto正しいものになり、リダイレクトがうまく機能します (また、ポリシーを定義する必要もありません)。

奇妙なことは、なぜそれが今機能するのか理解できないということです! 上記のJavaソースと元のクラスのコンパイルされていないバージョンとの間に違いは見つかりませんでした! System.out.println変数の値と関数の結果を取得するためにいくつか追加し、jar をビルドしました。私のjbossを再起動した後、それgotoは正しかった。時間があるときに、なぜこれが最終的に機能するのかを理解しようとします。

于 2012-08-22T09:30:32.437 に答える
0

チュートリアル「OpenAM を使用して Web サイトに認証を追加する」のこのステップを見てください。

セクション「アクセスポリシーの作成」->「ワイルドカードマッチング」が答えです:

ポリシー URL のワイルドカード * は「?」と一致しません。そのため、GET パラメータの送信を許可する場合は、 http://webserver.example.com/ *?* の 2 つ目のポリシーが必要です。

于 2012-08-21T05:04:40.117 に答える