クラス AbstractSecurityInterceptor
- java.lang.Object
-
- org.springframework.security.access.intercept.AbstractSecurityInterceptor
- 実装されたすべてのインターフェース:
org.springframework.beans.factory.Aware
、org.springframework.beans.factory.InitializingBean
、org.springframework.context.ApplicationEventPublisherAware
、org.springframework.context.MessageSourceAware
public abstract class AbstractSecurityInterceptor extends java.lang.Object implements org.springframework.beans.factory.InitializingBean, org.springframework.context.ApplicationEventPublisherAware, org.springframework.context.MessageSourceAware
セキュアオブジェクトのセキュリティインターセプトを実装する抽象クラス。AbstractSecurityInterceptor
は、セキュリティインターセプタの適切な起動設定を保証します。また、安全なオブジェクト呼び出しの適切な処理も実装します。SecurityContextHolder
からAuthentication
オブジェクトを取得します。SecurityMetadataSource
に対してセキュアオブジェクトリクエストを検索して、リクエストがセキュアな呼び出しに関連するのか、パブリックな呼び出しに関連するのかを判断します。- 保護された呼び出しの場合(保護されたオブジェクト呼び出し用の
ConfigAttribute
のリストがあります):Authentication.isAuthenticated()
がfalse
を返すか、alwaysReauthenticate
がtrue
である場合、構成されたAuthenticationManager
に対してリクエストを認証します。認証されたら、SecurityContextHolder
のAuthentication
オブジェクトを戻り値に置き換えます。- 構成された
AccessDecisionManager
に対してリクエストを承認します。 - 構成された
RunAsManager
を介して run-as 置換を実行します。 - 実際のオブジェクトの実行を続行する具象サブクラスに制御を渡します。
InterceptorStatusToken
が返されるため、サブクラスがオブジェクトの実行を続行した後、finally 句を使用すると、AbstractSecurityInterceptor
が確実に再呼び出しされ、finallyInvocation(InterceptorStatusToken)
を使用して正しく整理されます。 - 具象サブクラスは、
afterInvocation(InterceptorStatusToken, Object)
メソッドを介してAbstractSecurityInterceptor
を再度呼び出します。 RunAsManager
がAuthentication
オブジェクトを置き換えた場合は、SecurityContextHolder
を、AuthenticationManager
の呼び出し後に存在していたオブジェクトに戻します。AfterInvocationManager
が定義されている場合は、呼び出しマネージャーを呼び出し、呼び出し元に返されるため、オブジェクトを置き換えられるようにします。
- パブリックな呼び出しの場合(セキュアオブジェクト呼び出し用の
ConfigAttribute
はありません):- 上記のように、具象サブクラスは
InterceptorStatusToken
が返され、セキュアオブジェクトが実行された後にAbstractSecurityInterceptor
に再提示されます。afterInvocation(InterceptorStatusToken, Object)
が呼び出されても、AbstractSecurityInterceptor
はそれ以上のアクションを実行しません。
- 上記のように、具象サブクラスは
- コントロールは、呼び出し元に返される
Object
と共に、具象サブクラスに再び戻ります。次に、サブクラスはその結果または例外を元の呼び出し元に返します。
コンストラクターのサマリー
コンストラクター コンストラクター 説明 AbstractSecurityInterceptor()
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 具象メソッド 修飾子と型 メソッド 説明 protected java.lang.Object
afterInvocation(InterceptorStatusToken token, java.lang.Object returnedObject)
セキュアオブジェクトの呼び出しが完了した後、 AbstractSecurityInterceptor の作業を完了します。void
afterPropertiesSet()
protected InterceptorStatusToken
beforeInvocation(java.lang.Object object)
protected void
finallyInvocation(InterceptorStatusToken token)
セキュアオブジェクトの呼び出しが完了した後、 AbstractSecurityInterceptor の作業をクリーンアップします。AccessDecisionManager
getAccessDecisionManager()
AfterInvocationManager
getAfterInvocationManager()
AuthenticationManager
getAuthenticationManager()
RunAsManager
getRunAsManager()
abstract java.lang.Class<?>
getSecureObjectClass()
サブクラスが処理のために抽象親に提示するセキュアオブジェクトの型を示します。boolean
isAlwaysReauthenticate()
boolean
isRejectPublicInvocations()
boolean
isValidateConfigAttributes()
abstract SecurityMetadataSource
obtainSecurityMetadataSource()
void
setAccessDecisionManager(AccessDecisionManager accessDecisionManager)
void
setAfterInvocationManager(AfterInvocationManager afterInvocationManager)
void
setAlwaysReauthenticate(boolean alwaysReauthenticate)
AbstractSecurityInterceptor
がAuthentication.isAuthenticated()
プロパティを無視するかどうかを示します。void
setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher)
void
setAuthenticationManager(AuthenticationManager newManager)
void
setMessageSource(org.springframework.context.MessageSource messageSource)
void
setPublishAuthorizationSuccess(boolean publishAuthorizationSuccess)
AuthorizationFailureEvent
のみが公開されます。void
setRejectPublicInvocations(boolean rejectPublicInvocations)
公開呼び出しを拒否する(およびこのプロパティを true に設定する)ことにより、AbstractSecurityInterceptor
によって通知されたすべてのセキュアオブジェクト呼び出しに構成属性が定義されていることを確認できます。void
setRunAsManager(RunAsManager runAsManager)
void
setValidateConfigAttributes(boolean validateConfigAttributes)
メソッドの詳細
afterPropertiesSet
public void afterPropertiesSet()
- 次で指定:
- インターフェース
org.springframework.beans.factory.InitializingBean
のafterPropertiesSet
beforeInvocation
protected InterceptorStatusToken beforeInvocation(java.lang.Object object)
finallyInvocation
protected void finallyInvocation(InterceptorStatusToken token)
セキュアオブジェクトの呼び出しが完了した後、AbstractSecurityInterceptor の作業をクリーンアップします。このメソッドは、セキュアオブジェクトの呼び出しが正常に返されるかどうかに関係なく、セキュアオブジェクトの呼び出し後、afterInvocation の前に呼び出す必要があります (つまり、finally ブロックで実行する必要があります)。- パラメーター:
token
-beforeInvocation(Object)
メソッドによって返される
afterInvocation
protected java.lang.Object afterInvocation(InterceptorStatusToken token, java.lang.Object returnedObject)
セキュアオブジェクトの呼び出しが完了した後、 AbstractSecurityInterceptor の作業を完了します。- パラメーター:
token
-beforeInvocation(Object)
メソッドによって返されるreturnedObject
- セキュアオブジェクト呼び出しから返されたオブジェクト ( null の可能性があります)- 戻り値:
- 安全なオブジェクト呼び出しが最終的にその呼び出し元に返すべきオブジェクト ( null の可能性があります)
getAccessDecisionManager
public AccessDecisionManager getAccessDecisionManager()
getAfterInvocationManager
public AfterInvocationManager getAfterInvocationManager()
getAuthenticationManager
public AuthenticationManager getAuthenticationManager()
getRunAsManager
public RunAsManager getRunAsManager()
getSecureObjectClass
public abstract java.lang.Class<?> getSecureObjectClass()
サブクラスが処理のために抽象親に提示するセキュアオブジェクトの型を示します。これは、AbstractSecurityInterceptor
に接続されたコラボレーターがすべて、指定されたセキュアオブジェクトクラスをサポートするようにするために使用されます。- 戻り値:
- サブクラスがサービスを提供する安全なオブジェクトの型
isAlwaysReauthenticate
public boolean isAlwaysReauthenticate()
isRejectPublicInvocations
public boolean isRejectPublicInvocations()
isValidateConfigAttributes
public boolean isValidateConfigAttributes()
obtainSecurityMetadataSource
public abstract SecurityMetadataSource obtainSecurityMetadataSource()
setAccessDecisionManager
public void setAccessDecisionManager(AccessDecisionManager accessDecisionManager)
setAfterInvocationManager
public void setAfterInvocationManager(AfterInvocationManager afterInvocationManager)
setAlwaysReauthenticate
public void setAlwaysReauthenticate(boolean alwaysReauthenticate)
AbstractSecurityInterceptor
がAuthentication.isAuthenticated()
プロパティを無視するかどうかを示します。デフォルトはfalse
です。つまり、デフォルトでAuthentication.isAuthenticated()
プロパティは信頼され、プリンシパルがすでに認証されている場合は再認証は行われません。- パラメーター:
alwaysReauthenticate
-true
は、AbstractSecurityInterceptor
にAuthentication.isAuthenticated()
の値を無視させ、常にリクエストを再認証します(デフォルトはfalse
)。
setApplicationEventPublisher
public void setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher)
- 次で指定:
- インターフェース
org.springframework.context.ApplicationEventPublisherAware
のsetApplicationEventPublisher
setAuthenticationManager
public void setAuthenticationManager(AuthenticationManager newManager)
setMessageSource
public void setMessageSource(org.springframework.context.MessageSource messageSource)
- 次で指定:
- インターフェース
org.springframework.context.MessageSourceAware
のsetMessageSource
setPublishAuthorizationSuccess
public void setPublishAuthorizationSuccess(boolean publishAuthorizationSuccess)
AuthorizationFailureEvent
のみが公開されます。このプロパティをtrue
に設定すると、AuthorizedEvent
も公開されます。- パラメーター:
publishAuthorizationSuccess
- デフォルト値はfalse
です
setRejectPublicInvocations
public void setRejectPublicInvocations(boolean rejectPublicInvocations)
公開呼び出しを拒否する(およびこのプロパティを true に設定する)ことにより、AbstractSecurityInterceptor
によって通知されたすべてのセキュアオブジェクト呼び出しに構成属性が定義されていることを本質的に保証します。これは、宣言されていない安全なオブジェクトが拒否され、構成の省略が早期に検出される「フェイルセーフ」モードを保証できます。このプロパティを true に設定し、構成のないセキュアオブジェクトを呼び出そうとすると、 IllegalArgumentException が AbstractSecurityInterceptor によってスローされます。属性。- パラメーター:
rejectPublicInvocations
- 構成属性を持たないセキュアオブジェクトの呼び出しを拒否するには、true
に設定します(デフォルトでは、宣言されていないセキュアオブジェクトを「パブリック」または無認可として扱うのはfalse
です)。
setRunAsManager
public void setRunAsManager(RunAsManager runAsManager)
setValidateConfigAttributes
public void setValidateConfigAttributes(boolean validateConfigAttributes)