認証されていないクライアントが で定義されている非匿名アクセス レベルを必要とする URL を要求するとsecurity-config.xml
、Spring Security はログイン ページ (例 ) に HTTP リダイレクトを送信します/login
。これで問題ありません。
問題は、既存のセッション (クライアントのリクエストで提供される Cookie によって識別される) が存在しない場合、spring-security が URL でクライアントの新しいセッションも指定するリダイレクトを発行することです (例 ) /login;jsessionid=8o7pglapojus
。
多くのコンテナがこれをサポートしています (どうやら Tomcat では問題なく動作するようです) が、Jetty (現在使用しているもの) はサポートしていないようです。リダイレクトされた URL は URL ルーターに完全にそのまま ( jsessionid
「パラメータ」を含む) 渡され、名前付きセッションは/login
jetty/spring-security によってリクエストに関連付けられません (つまり、リクエストへの応答の Set-Cookie ヘッダーにまったく新しいセッション ID が提供されます/login
)。
ルートを一致させることでこれを回避できます/login.*
が、そもそも認証リダイレクトでセッション ID の発行を防ぐ方法があるかどうか興味があります。
ベストアンサー1
Spring Security 3.0.0 M1以降では、名前空間disable-url-rewriting="true"
で設定できます<http>
。それが役立つかどうかを確認してください。こちらも参照してください。機能リクエスト。