私が理解している限り、ユーザーがSpring Securityにログインすると、セッションが無効になり、新しいセッションが作成されます。
したがって、明確な sessionID cookie を使用して http から来た場合、Spring Security は、後続の https リクエストでのみブラウザーによって返される新しい sessionID の「安全な」cookie を設定する必要があります。
私が見逃しているのは、「ログインした」ユーザーが https から http に切り替えるとき、セッションを追跡するために非セキュア Cookie としてどこかに保存されている sessionID Cookie が必要であるということです。
Springがそれをどのように管理するかわかりません。
ユーザーがログインした後、http を参照すると、クリアな sessionID Cookie は安全な SessionID と同じになり、世界中に表示されますか? 誰かがそれを読んで、セッションを乗っ取ることができます。
Spring Security フローがわかりません。誰かがどのように機能するのか説明してもらえますか?
ありがとう
1 に答える
あなたが説明したまさにその理由から、HTTP セッションと HTTPS セッションを混在させないことが最善です。実際、HTTPS 経由でログインしてから HTTP に戻しても機能しないようです (ブラウザが安全なセッション Cookie を送信しないため)。
[...] セッション Cookie が「安全」とマークされている HTTPS で作成されたセッションは、その後 HTTP では使用できません。ブラウザは Cookie をサーバーに送り返さず、セッション状態はすべて失われます (セキュリティ コンテキスト情報を含む)。最初に HTTP でセッションを開始すると、セッション Cookie がセキュアとしてマークされないため、機能するはずです (また、Spring Security のセッション固定保護サポートを無効にして、ログイン時に新しいセキュア セッションが作成されないようにする必要があります (いつでも新しいセキュア セッションを作成できます)一般に、HTTP を使用するアプリケーションは中間者攻撃に対して脆弱であるため、HTTP と HTTPS を切り替えることはお勧めできません。ユーザーは HTTPS でサイトへのアクセスを開始し、ログアウトするまで引き続き使用する必要があります。HTTP 経由でアクセスしたページから HTTPS リンクをクリックするだけでも、潜在的に危険です。
http://static.springsource.org/spring-security/site/faq.htmlから