0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Spring Securityについて理解する①(DelegatingFilterProxy、FilterChainProxy、SecurityFilterChain)

Last updated at Posted at 2024-10-05

セキュリティーフィルターの流れ

以下のフィルターチェーンの流れがSpring Securityの基本的な認証・認可処理のベースとなっている。
またこの「フィルターチェーンを通じて、セキュリティチェックが順番に実行され、最終的にリクエストがサーブレットに届く流れ」をダウンストリームという。

①クライアントからリクエストが送られてくる
②フィルターチェーン(Filter0,Filter1,Filter2)を通る
③サーブレット(Javaアプリケーション)に到達
④サーブレットがレスポンスを作成し、クライアントに返却

image.png
Architecture

DelegatingFilterProxy、FilterChainProxy、SecurityFilterChain

DelegatingFilterProxy

  • TomcatなどのサーブレットコンテナのフィルターチェーンSpringのApplicationContext内のフィルターチェーンを橋渡しする役割を持ち、サーブレットコンテナが受け取ったリクエストをSpringのセキュリティフィルターに委譲する
  • SpringのBeanとして定義されたフィルターをサーブレットコンテナから動的に呼び出すための代理人のようなもの
  • サーブレットコンテナに依存しない形で、セキュリティのフィルターの設定や管理をSpringの中で柔軟に行うことができるため、DIによる依存性注入が可能となる
  • つまり以下の図でいうBean Filter0が実際のセキュリティチェックやその他の処理を行う

※Spring開発では、アプリケーション内で使うオブジェクト(サービスクラスやDAOなど)を手動で作るのではなく、Springが自動的に作ってくれる仕組みがあり、その自動的に作られたオブジェクトBeanと呼ぶ。

image.png
Architecture

Bean Filter

Springでは、フィルターも含めて、必要なオブジェクト(サービスクラスやDAOなど)はすべてApplicationContext、によって管理され、その管理されたオブジェクトをBeanと呼ぶ。

※ApplicationContextとはSpringフレームワークが提供する依存性注入(DI)の仕組みを管理するコンテナです。
Springでは、アプリケーションの各コンポーネント(サービス、リポジトリ、フィルターなど)をBeanとして定義し、それらの依存関係などを管理できる。

FilterChainProxy

  • 下記で説明するSecurityFilterChain内に含まれるセキュリティ関連のフィルター(認証フィルター、認可フィルター、CSRFフィルターなど)を順番に管理し、リクエストに対して適切なセキュリティ処理を実行する管理人のような役割
  • 上記で出てきたDelegatingFilterProxyから処理を任される
  • 下図がSpring Securityでよく使われる一般的なパターン

image.png
Architecture

SecurityFilterChain

  • セキュリティフィルター(認証フィルター、認可フィルター、CSRFフィルターなど)のグループのようなもの
  • 上記で出てきたBean Filterの集まりのようなもの

参考

以下のSpring Securityの公式ドキュメントを参考にしました。
Architecture

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?