0

ユーザーが必要に応じてRemember-Me-Serviceを使用してログインおよびログアウトできるWebアプリケーションを開発するために、Spring Framework 3.0.5およびSpring Security 3.0.5を使用しています。

経験が少ないので、ちゃんと動くのかな。PersistentTokenApproach を使用します (Hibernate を使用しているため、独自の実装を使用します)。ログイン時に Cookie が作成され、ログアウト時に削除されることがわかります。有効なRemember-Me-Cookieがあり、ブラウザを閉じた場合、ブラウザを再度開いたときに再度ログインに成功しました。ここまでは順調ですね。

さて、私が気付いたことが期待どおりに機能しているかどうか、またはおそらく間違いを犯したかどうかを知りたいだけです.

1)ユーザーがremember-meなしでログインし、ブラウザータブが閉じられている場合(ブラウザー自体ではありません)、新しいブラウザータブを再度開くと、ユーザーはまだ認証されています(同じJSESSIONIDを使用しています)。ブラウザーを閉じて再度開くと、彼はもう認証されていません。Web アプリケーションのセキュリティに関して、これは推奨される (「通常の」) 動作ですか?

2) remember-me が使用され、ユーザーが (ログインによって、または後で Cookie によって) 正常に認証されると、Cookie のチェックは行われなくなります。つまり、その間にユーザーがオンラインである場合、データベースから Cookie を削除しても、ユーザーはログインしたままで、保護されたページも見ることができます。これは、彼が以前に認証され、同じ SESSIONID を使用し続けているために発生したと思います。ブラウザーを閉じて再度開くと、彼はもう認証されていません。

3) Cookie を所有しておらず、メイン ページを開くと、送信するすべての要求 (ページ上のすべての画像、すべてのファイル) に対して、サーバーは rememberme-cookie をチェックします。あれは正しいですか?

初心者の質問で申し訳ありませんが、すべてが正常に機能していることを確認したいだけです。:-) 前もって感謝します!

4

1 に答える 1

1

1) ブラウザー内のタブに関する限り、それらはすべて同じブラウザー セッションを共有していると確信しています。gmail やその他の Web ベースのサービスを使用しようとすると、タブを閉じたり開いたりするときに同じ動作が見られます。古いバージョンの IE (おそらくバージョン 6) では、既存の IE インスタンスから生成された場合を除き、個別のインスタンスに独自のセッションがありました。

2) これは正しいように聞こえます。認証された後、すべてのリクエストでデータベースにアクセスするのは理想的ではありません。

3) 正しいです。デフォルトでは、Spring セキュリティ フィルターは /* でフィルタリングされ、認証情報を検索しようとします。保護する必要のないリソースのセキュリティ構成に除外を追加できます。

<http> <intercept-url pattern="/images/**" filters="none"/>
于 2011-04-21T14:48:22.493 に答える