1

Spring Security 2.0.4 を使用するレガシー アプリに取り組んでいます。カスタム AbstractPreAuthenticatedProcessingFilter と PreAuthenticatedAuthenticationProvider を作成しました。顧客のログイン サーバーから送信されたリクエストのパラメータとして送信された電子メール アドレスに基づいて、ユーザーを作成および認証します。(あまり安全ではありませんが、それが要件です)

これはすべて正常に機能しますが、私の問題は、ユーザーが認証されたらカスタム Cookie を作成して、ログイン サーバーによってリダイレクトされることなく現在のセッションの外部でアプリにアクセスできるようにする必要があることです。

AbstractPreAuthenticatedProcessingFilter または PreAuthenticatedAuthenticationProvider の HttpServletRepsonse オブジェクトにアクセスできないため、応答に Cookie を設定することはできません。AbstractPreAuthenticatedProcessingFilter クラスに RememberMeServices を実装できますが、これが正しい方法かどうかはわかりません。

誰かが私を正しい方向に向けることができますか? カスタム記憶機能を作成する必要がありますか? ユーザーが認証されたら、Cookie を設定するだけです (まだ存在しない場合)。その後、今後のリクエストのために、AbstractPreAuthenticatedProcessingFilter 内の Cookie を検証し、認証されたプリンシパルを返すことができます。

4

1 に答える 1

1

新しいフィルターを作成したり、remember-me をいじったりすることなく修正されました (事前認証とはあまり関係ありません)。

私は単純にオーバーライドしました: AbstractPreAuthenticatedProcessingFilter#successfulAuthentication これにより、HttpServletRepsonse にアクセスできるようになり、認証が成功した場合にのみ起動します。

于 2011-10-17T22:13:54.250 に答える