Method-Security
Method-Securityはサービスクラスのメソッドベースでアクセスを制御する際に利用する。 基本的な設定は次のようになる。
ソースコード6: applicationContext-security.xml抜粋(全サンプルのダウンロード)
<!-- Method-Securityの設定 -->
<global-method-security>
<!-- ポイントカットでメソッドと必要な権限を記述する -->
<protect-pointcut access="ROLE_ADMIN"
expression="execution(* sample.web1.*Service.*(..))" />
</global-method-security>
各タグの説明についてはソースコードのコメントを見てほしい。 メソッドの指定にはポイントカットが利用できるので、複数メソッドを一括して宣言することが可能だ。
またMethod-Securityにはアクセス制御のための3種類のアノテーションが用意されている。新しく追加されたアノテーションではACL機能を利用したり、パラメータを渡したりすることも可能になっている。
新しいアノテーションは次のように利用する。
ソースコード7: applicationContext-security.xml抜粋(全サンプルのダウンロード)
<global-method-security pre-post-annotations="enabled">
</global-method-security>
ソースコード7: SampleService.java(全サンプルのダウンロード)
package sample.web1;
import org.springframework.security.access.prepost.PreAuthorize;
public interface SampleService {
@PreAuthorize("hasRole('ROLE_ADMIN')")
void getMessage();
}
Method-Securityの設定をすると自動的にAOPの設定がされ、指定したクラスが呼び出されるときに、Aspectとしてアクセス制御処理が呼び出されるようになる。