2

アプリケーション サーバー (GlassFish 3.1.2.2) 用に開発したカスタマイズされたログイン モジュールでは、次の構文を使用して HttpServletRequest を取得しています。

PolicyContext.getContext(HttpServletRequest.class.getName())

そして、それはうまくいきます。

しかし、HTTPS のみを使用するようにサーバーを構成していて、同じ命令が null を返します。これはセキュリティ上の制限だと思いますが、この問題を解決するために何を変更する必要があるかわかりません (server.policy?)。これを理解するために、すべてのログイン試行の IP アドレスを記録する必要があります。有効なものと無効なものを問わず、モジュールでリクエストを取得することが最も明白な解決策のように思えました。

誰かが解決策を見つけるのを手伝ってくれますか?

4

1 に答える 1

0

あなたの質問に直接お答えすることはできませんPolicyContextが、JACC クラスであることに注意してください。JACC ポリシー プロバイダー内で動作するように仕様化されています。これについて詳しく説明している私が書いた記事をご覧になることをお勧めします。

したがって、GlassFish 独自のログイン モジュール内から動作を取得するという特定の保証はありませんが、HttpServletRequest実際にこれをより頻繁に使用している人々を見てきましたが、通常は動作します。https に切り替えたときに機能しないという事実は、特定のセキュリティ制限よりも、バグまたは見落としのように思えます。

回避策として、JASPIC を使用してログイン モジュールを Java EE 標準認証モジュールとして書き直すことができます。その件については記事も書いていますので、参考にしてください。JASPIC では、明示的にHttpServletRequest.

于 2014-04-11T17:34:16.287 に答える