問題タブ [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.
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$RequestCapture
s だと思います) が を呼び出しAuthenticatorBase#authenticateJaspic
、特定の if ブランチ (902 行目) に入りPrincipal
、前述のチェックを行い、認証状態をセッションに保存した後にあります。これは、制約のあるリソースにアクセスしようとした後にログインした場合にのみ発生します。
今のところ、発信者が開始した認証プロセスを模倣するダミーの保護されたページを作成しますが、他に何ができるか知りたいです。
更新 2:のログは次のとおりですorg.apache.catalina.authenticator.AuthenticatorBase
。
保護されたリソースにアクセスした場合
ログインページに直接アクセスした場合