ここで入手可能なサンプルを使用して、春のセキュリティ openid 統合を実装しました: OpenId+Spring Integration
統合は正常に機能します。保護されたリソースをリクエストすると、ログイン ページにリダイレクトされ、認証後に自動的に保護されたリソースにリダイレクトされます。
ただし、保護されていないページにいる場合 (ここで説明されている状況に似ています: http://forum.springsource.org/showthread.php?95317-Redirect-to-original-page-after-login-success-failure ) およびログインボタンをクリックすると、ログイン後にホームページにリダイレクトされます。ログインボタンをクリックしたページにリダイレクトしたいと思います。
春のフォーラム スレッドは、buildReturnToUrl メソッドをオーバーライドすることを提案しています。私はそれを通してデバッグしました。次の形式の returnToURL が常に生成されます。
http://localhost:8080/listocal/j_spring_openid_security_check
op と Rob Winch の間で舞台裏で通信が行われましたが、op が実際にそれをどのように上書きしたかはわかりません。
または、次のようなコードで別のフィルターを作成しようとしました。
public void doFilter(....) {
...
DefaultSavedRequest savedRequest = new DefaultSavedRequest((HttpServletRequest) request, new PortResolverImpl());
((HttpServletRequest)request).getSession().setAttribute("SPRING_SECURITY_SAVED_REQUEST", savedRequest);
}
このフィルターが OpenIDAuthenticationFilter の前に実行される場合、保存されたリクエストは RequestCacheAwareFilter によって削除されます (おそらくこの問題が原因です: https://jira.springsource.org/browse/SEC-1241 )
このフィルターが OpenIDAuthenticationFilter の後に実行されると、各リクエストの後に投稿パラメーターが連結されるという問題が発生します。
誰かがこれについて正しい方法を指摘できますか?