Spring Security
セッションとフラッシュメッセージ では、セッションにログイン状態を持つログインを手書きしました。本番のアプリの認証・認可をまとめて引き受けるのが Spring Security です。
1. 本番の認証・認可
Section titled “1. 本番の認証・認可”12 章の手書きログインは、セッションにログイン状態を持つ最小限のものでした。本番のアプリでは、より広い範囲の認証・認可が必要になります。
1-1. 本番で求められること
Section titled “1-1. 本番で求められること”本番のアプリでは、次のような認証・認可が求められます。
- 認証(誰であるか)と認可(どの操作を許すか)を、パス・HTTP メソッド・利用者の役割で体系的に管理する
- CSRF 対策(他サイトからの不正なフォーム送信の防止)
- セッション固定化対策
- パスワードの安全な保存と照合(ハッシュ化、強度の管理)
- 未ログインで保護ページにアクセスしたとき、ログイン後に元のページへ戻す
1-2. Spring Security による実現
Section titled “1-2. Spring Security による実現”これらをまとめて提供するのが Spring Security です。spring-boot-starter-security を追加すると、リクエストはコントローラーに届く前にセキュリティのフィルターを通り、宣言したルールに従って許可・拒否されます。HandlerInterceptor で手書きした「未ログインならリダイレクト」も、パスと HTTP メソッドの組み合わせ・利用者の役割を含めて、設定で宣言できます。