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

    • フレームワーク処理のエントリーポイント
    • サーブレットフィルタークラス
    • 全体的な処理の流れの制御をしており、実際のセキュリティ対策処理は SecurityFilterChain が行なっている。
  • HttpFireWall

    • HttpServletRequestHttpServletResponseに対してファイヤーウォール機能を提供するもの。
    • DefaultHttpFireWallにはディレクトリトラバーサル攻撃やHTTPレスポンス分割攻撃に対するチェックなどが実装されている。
  • SecurityFilterChain

    • FilterChainProxyが受け取ったリクエストに対して、適用するSecurity Filterの管理をするインターフェイス
    • リクエストURIによって、適用するSecurity Filterの管理をすることができる。
    • SecurityFilterクラスの種類
      • SecurityContextPersistenceFilter:リクエストを跨いでユーザの認証情報を共有する機能を提供するクラス。デフォルトではHttpSessionに認証情報を格納して実現している。
      • UsernamePasswordAuthenticationFilter:リクエストパラメータで指定されたユーザ名とパスワードを用いて認証処理を行うクラス。
      • LogoutFilter:ログアウト処理を行うクラス
      • FilterSecurityInterceptor:HTTPリクエスト(HttpServletRequest)に対して認可処理を実行するクラス。
      • ExceptionTranslationFilter:FIlterSecurityInterceptorで発生した例外をハンドリングするクラス。