2

私のアプリケーションには、Spring Web セキュリティを使用する Web アプリケーションを実行する組み込みの jetty サーバー (バージョン 8.1.2) があります。jetty サーバーは、JDBCSessionManager

spring が採用するセキュリティ フィルターの 1 つは のサブクラスでありAbstractAuthenticationProcessingFilterSessionAuthenticationStrategyその中にデフォルトでSessionFixationProtectionStrategy. この保護戦略は、元のセッションのコピーとして新しいセッションを作成し、古いセッションを無効にします。

Web アプリケーションにログインしようとすると、新しいセッションが作成されていることがわかりますが、新しいセッションに追加された認証属性がデータベースに書き戻されません。さらに、無効化されたにもかかわらず、古いセッションが新しい属性でデータベースに書き込まれていることがわかります。

最後に、新しい http 要求が新しいセッションの一部として到着すると、上記の理由で認証に合格しません。

調査の結果、古いバージョンの jetty (7.1.4 を試しました) ではこの動作が発生しないことがわかり、新しいセッション データがデータベースに書き込まれていることがわかりました。

もちろん、次のいずれかでこの問題を解決できます。

  • 古いバージョンの jetty を使用する
  • セッション固定保護戦略を無効にする
  • の代わりにデフォルトのセッション マネージャを使用します。JDBCSessionManager

しかし、上記のオプションのいずれも有効ではないと仮定すると、この問題の解決策があるかどうか疑問に思っていました.

ありがとう!

4

1 に答える 1

1

jetty 8の新しいリリース、少なくとも8.1.6で解決されました:)

于 2012-09-11T19:50:55.770 に答える