Spring Security情報
- Spring Securityとは
- 主な特徴
- Spring Securityを構成するモジュール
- Spring Security 5.x に含まれるサンプルアプリケーション
- 類似プロダクト
- Spring Securityのライセンス
- 製品ダウンロード
- 参考情報
- オープンソース年間サポートサービス
Spring Securityとは
Spring Security(スプリングセキュリティ)は、Springベースのアプリケーションに対してセキュリティ強化を実現するためのフレームワークです。
以下を実現することが主な目的です。
・ 認証 (BASIC認証、X.509クライアント認証、LDAP認証、OpenID Connect 1.0など)
・ 認可 (URLパスとロールによるアクセス許可/拒否、OAuth 2.0など)
・ セッション固定攻撃、クリックジャッキング、CSRFなどの攻撃に対するセキュリティ保護
上記以外にも多数の認証、認可、セキュリティ対策が可能で、それでも対応できない場合は用件に応じてカスタマイズすることもできます。Spring Securityは、サーブレットフィルタの仕組みを利用して、こうした機能を実現しています。
Spring Securityは、Springベースのアプリケーションのセキュリティ機能を実現するため、2003年にベンアレックス氏らにより「Acegi Security」として開発され、Spring Frameworkの開発者らに渡す時に「Spring Security」という名前にすることを提案しましたが、レビューの時間がなかったため、しばらくは「The Acegi Security System for Spring」と呼ばれていました。(「Acegi」という名前は開発者であるベンアレックス氏が1990年代に作ったBBS(電子掲示板)の名前で、特に意味があるわけでなかったようです。)
当初の構成では、Acegi Securityが認可を実現し、認証はTomcatなどのサーブレットコンテナが行うように設計、開発されていましたが、サーブレットコンテナの機能的な制限や設定上の問題により、誤った設定やユーザーの混乱の要因となったため、Acegi Securityに独自の認証機能が実装されるようになっていきました。
その後、プロジェクトは開発の規模を大きくしながら、2005年には公式のSpring Frameworkサブプロジェクトになり、2007年にAcegi Securityは「Spring Security」へと改名されました。
主な特徴
Spring Securityは広範囲な認証モデルを提供しています。認証モデルの多くは、サードパーティが独自に開発・提供しているか、IETF(Internet Engineering Task Force)などの標準化団体により仕様が策定されています。Spring Securityはこれらを実装しているほか、独自の認証機能も提供しています。またSpring Security 5.0 からは Spring Framework 5.0 で導入された WebFlux にも対応しています。
具体的には、Spring Security 6.2では以下のような認証テクノロジーとの統合機能を提供しています。
- HTTP BASIC認証
- HTTP Digest認証
- HTTP X.509クライアント証明書認証
- LDAP認証
- Formベース認証
- OpenID Connect
- SAML
- リクエストヘッダーを利用した認証
- CAS
- remember-me認証
- 匿名認証
- Java Authentication and Authorization Service (JAAS)
- Java EEコンテナ認証
- 独自に開発した認証システム など
また、Spring Security 5.7以降では、WebSecurityConfigurerAdapterが非推奨となり、コンポーネントベースのセキュリティ設定に移行することが推奨されるため、それ以前のバージョンとのセキュリティ設定の書き方に大幅な変更がありました。
具体的な記載については、以下の公式ブログを参考にしてください
Spring Securityを構成するモジュール
Spring Security には、以下のプロジェクトモジュールが含まれています。
Core |
spring-security-core.jar |
認証、認可のためのコアとなるインタフェースやクラスを含む必須モジュールです。 |
---|---|---|
Remoting |
spring-security-remoting.jar |
Spring Remotingと連携するためのモジュールです。 |
Web |
spring-security-web.jar |
サーブレットやフィルタなどの、Webセキュリティのためのモジュールです。 |
Config |
spring-security-config.jar |
セキュリティネームスペース解析やJavaコンフィグレーションなどを使用して各種設定を行うためのモジュールです。 |
LDAP |
spring-security-ldap |
LDAPによる認証やユーザ管理を行うためのモジュールです。 |
OAuth 2.0 Core |
spring-security-oauth2-core.jar |
OAuth 2.0認証フレームワークとOpenID Connect Core 1.0を使用するためのコアモジュールです。 |
OAuth 2.0 Client |
spring-security-oauth2-client.jar |
OAuth 2.0 認証フレームワークとOpenID Connect Core 1.0のクライアントアプリケーション向けモジュールです。 |
OAuth 2.0 JOSE |
spring-security-oauth2-jose.jar |
JOSE(Javascript Object Signing and Encryption)フレームワークを使用するためのモジュールです。 |
OAuth 2.0 Resource Server |
spring-security-oauth2-resource-server.jar |
OAuth 2.0リソースサーバーに対するSpring Securityのサポートが含まれています。OAuth 2.0のベアラートークンを使ってAPIを保護するために使われます。 |
Taglibs |
spring-security-taglibs.jar |
Spring SecurityのJSPタグの実装を提供します。 |
ACL |
spring-security-acl.jar |
ACLを使用してアプリケーションのドメインオブジェクトの認可を行うためのモジュールです。 |
CAS |
spring-security-cas.jar |
CAS シングルサインオンを行うためのモジュールです。 |
Test |
spring-security-test.jar |
テスト用のクラスが含まれています。 |
Spring Security 5.x に含まれるサンプルアプリケーション
Spring Security 5.x には、以下のサンプルアプリケーションが用意されています。
- Tutorial Sample
- Contacts
- LDAP Sample
- OpenID Connect Sample
- CAS Sample
- JAAS Sample
- Pre-Authentication Sample
類似プロダクト
Spring Securityは、Springベースのアプリケーションのセキュリティを強化することに特化したフレームワークであり、これと同類のソフトウェアはありません。ただし、Springベースのアプリケーションの認証や認可を実現するために、別のソフトウェアを使用することはできます。例えば、Spring Securityを使わずに、KeycloakやOpenAMなどとSpringベースのアプリケーションを連携することもできます。Spring FrameworkにはKeycloakと簡単に連携するためのモジュールが提供されており、Spring Securityを使った上でKeycloakと連携することも、Spring Securityを使わずに連携することも可能です。
Spring Securityのライセンス
Spring Securityのライセンスは、「Apacheライセンスバージョン2」(Apache License version 2)というライセンスに基づいて公開され、営利、非営利を問わず、誰でも自由かつ無償で利用・改変・再配布できるようになっています。
製品ダウンロード
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。
関連OSS
-
サポート対象
Apache Struts
アパッチストラッツ。Java言語を用いてWebアプリケーションを開発するためのフレームワークです。
-
Apache Wicket
アパッチウィケット。Javaで実装されたコンポーネントベースのWebアプリケーションフレームワークです。
-
サポート対象
MyBatis
マイバティス。iBATISの後継プロジェクトとして開発され、Javaならびに.NET Frameworkプラットフォームが対象のデータマッパーフレームワークです。