Spring Securityの概要
Spring Securityについて勉強した時のメモ。 ほぼTERASOLUNA Projectのドキュメントの内容です。 9.1. Spring Security概要 — TERASOLUNA Server Framework for Java (5.x) Development Guideline 5.3.0.RELEASE documentation
概要
- Spring Securityとは、Webアプリケーションにセキュリティ対策機能を実装するときに利用されるフレームワーク。
- 基本機能として大きく分けて次の2つの機能を持つ。
- 認証:ユーザの正当性を確認する作業。
- 認可:アプリケーションが提供するリソースや処理に対して、アクセスを制御する機能。
- 他にもセキュリティ強化のため下記の機能を持つ。
- セッション管理機能:セッションのライフサイクル管理, セッションハイジャック対策, セッション固定攻撃対策
- CSRF対策機能:CSRF対策
- ブラウザセキュリティ機能連携:レスポンスヘッダによってブラウザが提供するセキュリティ機能と連携する
フレームワーク処理
FilterChainProxy
HttpFireWall
HttpServletRequest
とHttpServletResponse
に対してファイヤーウォール機能を提供するもの。DefaultHttpFireWall
にはディレクトリトラバーサル攻撃やHTTPレスポンス分割攻撃に対するチェックなどが実装されている。
SecurityFilterChain
FilterChainProxy
が受け取ったリクエストに対して、適用するSecurity Filterの管理をするインターフェイス。- リクエストURIによって、適用するSecurity Filterの管理をすることができる。
- SecurityFilterクラスの種類
- SecurityContextPersistenceFilter:リクエストを跨いでユーザの認証情報を共有する機能を提供するクラス。デフォルトでは
HttpSession
に認証情報を格納して実現している。 - UsernamePasswordAuthenticationFilter:リクエストパラメータで指定されたユーザ名とパスワードを用いて認証処理を行うクラス。
- LogoutFilter:ログアウト処理を行うクラス
- FilterSecurityInterceptor:HTTPリクエスト(
HttpServletRequest
)に対して認可処理を実行するクラス。 - ExceptionTranslationFilter:
FIlterSecurityInterceptor
で発生した例外をハンドリングするクラス。
- SecurityContextPersistenceFilter:リクエストを跨いでユーザの認証情報を共有する機能を提供するクラス。デフォルトでは