メソッドのセキュリティ
<method-security>
この要素は、Spring Security Bean のメソッドを保護するためのサポートを追加するための主要な手段です。メソッドは、アノテーション(インターフェースまたはクラスレベルで定義)を使用するか、ポイントカットのセットを定義することで保護できます。
<method-security> 属性
pre-post-enabled このアプリケーションコンテキストに対して Spring Security の呼び出し前および呼び出し後のアノテーション(@PreFilter、@PreAuthorize、@PostFilter、@PostAuthorize)を有効にします。デフォルトは "true" です。
secure-enabled このアプリケーションコンテキストに対して Spring Security の @Secured アノテーションを有効にします。デフォルトは "false" です。
jsr250-enabled このアプリケーションコンテキストの JSR-250 認証アノテーション(@RolesAllowed、@PermitAll、@DenyAll)を有効にします。デフォルトは "false" です。
mode "aspectj" に設定すると、AspectJ を使用してメソッド呼び出しをインターセプトします。
proxy-target-class true の場合、インターフェースベースのプロキシの代わりにクラスベースのプロキシが使用されます。デフォルトは "false" です。
security-context-holder-strategy- ref SecurityContext を取得するときに使用する SecurityContextHolderStrategy を指定します。デフォルトは、SecurityContextHolder.getContextHolderStrategy() によって返される値です。
観察レジストリ参照
FilterChain
および関連コンポーネントに使用されるObservationRegistry
への参照
<global-method-security>
この要素は、Spring Security Bean のメソッドを保護するためのサポートを追加する主な手段です。メソッドは、アノテーション(インターフェースまたはクラスレベルで定義)を使用するか、AspectJ 構文を使用して一連のポイントカットを子要素として定義することで保護できます。
<global-method-security> の属性
access-decision-manager-ref メソッドセキュリティは、Web セキュリティと同じ
AccessDecisionManager
構成を使用しますが、この属性を使用してこれをオーバーライドできます。デフォルトでは、AffirmativeBased 実装は RoleVoter および AuthenticatedVoter で使用されます。
authentication-manager-ref メソッドセキュリティに使用される
AuthenticationManager
への参照。
jsr250-annotations JSR-250 スタイル属性を使用するかどうかを指定します(たとえば、"RolesAllowed" )。これには、クラスパスに javax.annotation.security クラスが必要です。これを true に設定すると、
Jsr250Voter
がAccessDecisionManager
に追加されるため、カスタム実装を使用していてこれらのアノテーションを使用する場合は、これを行う必要があります。
metadata-source-ref 他のソース(デフォルトのアノテーションなど)よりも優先される外部
MethodSecurityMetadataSource
インスタンスを提供できます。
mode この属性を "aspectj" に設定して、デフォルトの Spring AOP の代わりに AspectJ を使用することを指定できます。protected メソッドは、
spring-security-aspects
モジュールのAnnotationSecurityAspect
で織る必要があります。
AspectJ は、インターフェースのアノテーションは継承されないという Java のルールに従っていることに注意することが重要です。これは、インターフェースでセキュリティアノテーションを定義するメソッドが保護されないことを意味します。代わりに、AspectJ を使用するときにクラスに Security アノテーションを配置する必要があります。
order メソッドセキュリティインターセプタにアドバイス "order" を設定できます。
pre-post-annotations このアプリケーションコンテキストで Spring Security の事前およびリアクティブ呼び出しアノテーション(@PreFilter、@PreAuthorize、@PostFilter、@PostAuthorize)の使用を有効にするかどうかを指定します。デフォルトは「無効」です。
proxy-target-class true の場合、インターフェースベースのプロキシの代わりにクラスベースのプロキシが使用されます。
run-as-manager-ref 設定された
MethodSecurityInterceptor
によって使用されるオプションのRunAsManager
実装への参照
secure -annotations このアプリケーションコンテキストで Spring Security の @Secured アノテーションの使用を有効にするかどうかを指定します。デフォルトは「無効」です。
<after-invocation-provider>
<pre-post-annotation-handling>
<invocation-attribute-factory>
<post-invocation-advice>
<pre-invocation-advice>
メソッドの保護
<protect-pointcut>
@Secured
アノテーションを使用して個々のメソッドまたはクラスベースでセキュリティ属性を定義するのではなく、<protect-pointcut>
要素を使用して、サービスレイヤーのメソッドおよびインターフェースのセット全体にわたって横断的セキュリティ制約を定義できます。名前空間の導入に例があります。
<intercept-methods>
<method-security-metadata-source>
MethodSecurityMetadataSource インスタンスを作成します
<method-security-metadata-source> の属性
id Bean 識別子。コンテキストの他の場所で Bean を参照するために使用されます。
use-expressions 構成属性の従来のリストではなく、<intercept-url> 要素の "access" 属性で式の使用を有効にします。デフォルトは "false" です。有効にした場合、各属性には単一のブール式を含める必要があります。式が "true" と評価されると、アクセスが許可されます。