Tomcat レルム機能と並行して、ユーザー ログインの 2 番目の方法を構築しようとしています。つまり、認証されていないユーザーは次のいずれかを行うことができます:
1. レルムを呼び出してサインインする
2. 有効なトークンを提供し、自動的にログインする
私は2を達成しようとしています。そのため、フィルターを使用してリクエストをラッパーにリダイレクトします。そのラッパー内で をオーバーライドしてgetUserPrincipal
、そのユーザーのプリンシパルを作成できるようにします。次に、コンテナーはプリンシパルを認識し、ユーザーがログイン ページにリダイレクトせずに入力できるようにします。
ただし、問題は次のとおりです。すべてのリクエストが正しいプリンシパルを取得するとは限らないようです。サーブレットに関するリクエスト、およびサーブレットがDispatcher
リクエストの転送に使用する場合は、プリンシパル セットが取得されます。単純なリンクまたはサーブレットを使用してもメソッドsendRedirect
が呼び出されないためgetUserPrincipal
、ユーザーが方法 2 を使用してログインしている場合でもログイン ページが表示されます。
これは、そのユーザー用に作成されたプリンシパルが「一時的」であるようなものです。ユーザーが認証されていることをコンテナが認識できるように、プリンシパルをセッションまたはどこかに保存する方法があるかどうか疑問に思っています。