Spring Securityは、Javaベースのアプリケーションでセキュリティ機能を提供するためのフレームワークです。Spring SecurityはSpringフレームワークの一部であり、主に認証(Authentication)や認可(Authorization)などのセキュリティ関連の機能を提供します。以下に、Spring Securityの主要な機能と用語について簡単に解説します。
認証(Authentication): 認証は、ユーザーが誰であるかを確認するプロセスです。Spring Securityは、ユーザーの認証にさまざまな方法を提供しています。主な認証の方法には以下があります。
ユーザー名とパスワードによる認証: ユーザーが提供したユーザー名とパスワードを使用して認証します。LDAP、OAuth、OpenID Connectなど: 外部の認証プロバイダーを使用して認証します。
- 認可(Authorization): 認可は、ユーザーが特定のアクションやリソースに対してアクセス権限を持っているかどうかを確認するプロセスです。Spring Securityでは、ロール(Role)や権限(Permission)に基づいたアクセスコントロールがサポートされています。
セキュリティコンテキスト(Security Context): Spring Securityは、セキュリティ関連の情報を
SecurityContextHolder
を介して提供します。SecurityContextHolder
には、現在のユーザーの認証情報や権限情報が格納されています。
フィルターチェーン(Filter Chain): Spring Securityは、Servletフィルターを使用してリクエストを処理するためのフィルターチェーンを提供します。このフィルターチェーンは、認証、認可、CSRF(Cross-Site Request Forgery)対策などの機能を提供します。
アノテーションベースのアクセスコントロール: Spring Securityでは、アノテーションを使用してメソッドやクラスに対するアクセスコントロールを簡単に設定できます。例えば、
@Secured
、@PreAuthorize
、@PostAuthorize
などのアノテーションがあります。
CSRF対策: Spring Securityは、CSRF攻撃からアプリケーションを守るための機能を提供しています。デフォルトでは有効になっており、
<input>
要素にトークンを埋め込んでフォームからのリクエストを保護します。
セッション管理: Spring Securityは、ユーザーのセッション管理に関する機能も提供します。同時ログインの制限、セッション固定攻撃の防止などがサポートされています。
Remember-Me認証: Remember-Me認証は、ユーザーがログイン情報を覚えさせ、再度ログインなしでアクセスできるようにする機能です。自動的に生成されるトークンを使用して実現されます。
- Spring Securityを使用する際には、構成クラスを作成してカスタマイズすることが一般的です。例えば、
WebSecurityConfigurerAdapter
を継承したクラスを作成し、セキュリティの設定を行います。これにより、認証プロバイダー、アクセスルール、セッションの管理などを設定できます。