本企画では、Springの主要プロダクトを順に取り上げ、その役割や使い方を簡単に紹介している。

今回取り上げるのは「Spring Security」。同プロダクトはSpring Sourceが提供するユーザ認証・アクセス制御のためのプロダクトである。以下ではSpring Securityの基本的な利用方法に加えて、拡張に備えたクラス構造の説明をする。

Spring Securityとは

Spring Securityは、Bean定義ファイルを書き換えることで、様々な要件のシステムに対応することが可能だ。また、長大になりがちなBean定義ファイルも、Spring Security専用のXML名前空間のタグ(以下Securityタグ)を利用することで、設定の柔軟性を失わずに簡潔に記述することが可能になっている。

Spring SecurityはSecurityという名前がついているが、あくまでユーザ認証とアクセス制御のためのプロダクトであり、今日アプリケーション(以下AP)に存在する、様々なセキュリティ上の問題すべてに対応するものではないので注意が必要だ。

以降でSpring Securityの説明をしていくが、その前にユーザ認証とアクセス制御という語句の意味を確認しておきたい。

ユーザ認証とはシステムを利用しようとするものが、主張する本人であることを確認し、主体を確立することである。

またアクセス制御とはユーザ認証で確立された主体が、ある画面にアクセスできるかどうか、ある機能を実行できるかどうかを判断することである。

わかりやすくいうと、画面で入力されたユーザ名とパスワードの妥当性を検証するのがユーザ認証、主体ごとに表示する画面や利用できる機能を変えるのがアクセス制御である。

Spring Securityはユーザ認証とアクセス制御の役割を担うクラス群と、これらの機能をAPに付加するためのFilterやAspectを提供している。

今回は、Filterを利用するHTTP-SecurityとAspectを利用するMethod-Securityを中心に、Spring Securityの機能を見ていくことにする。

本記事ではSpring Security 3.0.2.RELEASEを前提に話を進めているが、そのライブラリは複数のjarで構成されている。本記事で利用するのは、主に次のjarである。

  • spring-security-core.jar: ユーザ認証・アクセス制御の中核クラスが含まれる。
  • spring-security-web.jar: Filterを利用するHTTP-Security関連のクラスが含まれる。
  • spring-security-config.jar: Securityタグを利用するために必要なクラスが含まれる。