問題タブ [jaspic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
107 参照

java - 制約のあるリソースにアクセスしなくても、CustomFormAuthenticationMechanism を使用したログイン ページを機能させる

TomEE 8.0.8 Web プロファイルを使用しています。最小限の例を次に示します。

予約済みページ (認証済みユーザーのみ)

認証されていないユーザーとして "/protected" にアクセスすると、Web サーバーによってログイン ページにリダイレクトされます。そこで資格情報を送信すると、見たいページにリダイレクトされます。これは意図したとおりに機能します。

問題は、保護されたリソースにアクセスせずにログインするだけの場合です。「/login」に移動して資格情報を送信すると、セッションに保存されません。実際、「/protected」を開こうとすると、まだ認証されていないかのように動作します。

何が問題になる可能性がありますか? JSR 375 は、パラメーターを含む「processCallerInitiatedAuthentication」と「processContainerInitiatedAuthentication」について話していnewAuthenticationますが、私はそれを機能させることができません。

更新:securityContext.authenticate(req, resp, authparams)保護されたリソースまたはログインページ自体によって呼び出された場合、呼び出しは同様の結果をもたらすようです:Principalセッションではなくリクエストに保存されます。

実際の違いは LoginServlet#doGet TomEE フィルター (私はOpenEJBSecurityListener$RequestCaptures だと思います) が を呼び出しAuthenticatorBase#authenticateJaspic特定の if ブランチ (902 行目) に入りPrincipal、前述のチェックを行い、認証状態をセッションに保存した後にあります。これは、制約のあるリソースにアクセスしようとした後にログインした場合にのみ発生します。

今のところ、発信者が開始した認証プロセスを模倣するダミーの保護されたページを作成しますが、他に何ができるか知りたいです。

更新 2:のログは次のとおりですorg.apache.catalina.authenticator.AuthenticatorBase

保護されたリソースにアクセスした場合

ログインページに直接アクセスした場合