クラス ProviderManager
- java.lang.Object
-
- org.springframework.security.authentication.ProviderManager
- 実装されているすべてのインターフェース:
org.springframework.beans.factory.Aware
、org.springframework.beans.factory.InitializingBean
、org.springframework.context.MessageSourceAware
、AuthenticationManager
public class ProviderManager extends java.lang.Object implements AuthenticationManager, org.springframework.context.MessageSourceAware, org.springframework.beans.factory.InitializingBean
AuthenticationProvider
のリストを介してAuthentication
リクエストを繰り返します。通常、 AuthenticationProvider は、null 以外のレスポンスが返されるまで順番に試行されます。NULL 以外のレスポンスは、プロバイダーに認証リクエストを決定する権限があり、それ以上プロバイダーが試行されないことを示します。後続のプロバイダーがリクエストを正常に認証すると、以前の認証例外は無視され、成功した認証が使用されます。後続のプロバイダーが null 以外のレスポンスまたは新しい
AuthenticationException
を提供しない場合、最後に受信したAuthenticationException
が使用されます。プロバイダが null 以外のレスポンスを返さない場合、またはAuthentication
を処理できることを示す場合、ProviderManager
はProviderNotFoundException
をスローします。親AuthenticationManager
も設定できます。これは、構成されたプロバイダーのいずれも認証を実行できない場合にも試行されます。ただし、これは名前空間の構成オプションをサポートするためのものであり、通常は必要な機能ではありません。このプロセスの例外は、プロバイダーが
AccountStatusException
をスローする場合です。この場合、リスト内のそれ以上のプロバイダーは照会されません。認証後、CredentialsContainer
インターフェースを実装している場合、返されたAuthentication
オブジェクトから資格情報がクリアされます。この動作は、eraseCredentialsAfterAuthentication
プロパティを変更することで制御できます。イベント発行
認証イベントの発行は、デフォルトではイベントを発行しない null 実装に設定された
AuthenticationEventPublisher
に委譲されます。そのため、Bean を自分で設定している場合、イベントを受信するにはパブリッシャー Bean を注入する必要があります。標準実装はDefaultAuthenticationEventPublisher
で、一般的な例外をイベントにマップし(認証が失敗した場合)、認証が成功した場合にAuthenticationSuccessEvent
を公開します。名前空間を使用している場合、この Bean のインスタンスは <http> 構成によって自動的に使用されるため、アプリケーションの Web パーツからイベントを自動的に受け取ります。実装は、認証結果(または例外)が設定されている場合、その認証結果を「親」
AuthenticationManager
から取得するときに、認証失敗イベントも発行することに注意してください。この状況では、通常、親はイベントを公開するように構成しないでください。そうしないと、重複が発生します。
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 protected org.springframework.context.support.MessageSourceAccessor
messages
コンストラクターの概要
コンストラクター コンストラクター 説明 ProviderManager(java.util.List<AuthenticationProvider> providers)
指定されたAuthenticationProvider
を使用してProviderManager
を構築しますProviderManager(java.util.List<AuthenticationProvider> providers, AuthenticationManager parent)
提供されたパラメーターを使用してProviderManager
を作成しますProviderManager(AuthenticationProvider... providers)
指定されたAuthenticationProvider
を使用してProviderManager
を構築します
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 void
afterPropertiesSet()
Authentication
authenticate(Authentication authentication)
渡されたAuthentication
オブジェクトの認証を試みます。java.util.List<AuthenticationProvider>
getProviders()
boolean
isEraseCredentialsAfterAuthentication()
void
setAuthenticationEventPublisher(AuthenticationEventPublisher eventPublisher)
void
setEraseCredentialsAfterAuthentication(boolean eraseSecretData)
設定されている場合、CredentialsContainer
インターフェースを実装する結果のAuthentication
は、authenticate()
メソッドから返される前にeraseCredentials
メソッドが呼び出されます。void
setMessageSource(org.springframework.context.MessageSource messageSource)
コンストラクターの詳細
ProviderManager
public ProviderManager(AuthenticationProvider... providers)
指定されたAuthenticationProvider
を使用してProviderManager
を構築します- パラメーター:
providers
- 使用するAuthenticationProvider
ProviderManager
public ProviderManager(java.util.List<AuthenticationProvider> providers)
指定されたAuthenticationProvider
を使用してProviderManager
を構築します- パラメーター:
providers
- 使用するAuthenticationProvider
ProviderManager
public ProviderManager(java.util.List<AuthenticationProvider> providers, AuthenticationManager parent)
提供されたパラメーターを使用してProviderManager
を作成します- パラメーター:
providers
- 使用するAuthenticationProvider
parent
- フォールバックする親AuthenticationManager
メソッドの詳細
afterPropertiesSet
public void afterPropertiesSet()
- 次で指定:
- インターフェース
org.springframework.beans.factory.InitializingBean
のafterPropertiesSet
authenticate
public Authentication authenticate(Authentication authentication) throws AuthenticationException
渡されたAuthentication
オブジェクトの認証を試みます。AuthenticationProvider
のリストは、AuthenticationProvider
が、渡されたAuthentication
オブジェクトの型を認証できることを示すまで、連続して試行されます。次に、そのAuthenticationProvider
で認証が試行されます。渡された
Authentication
オブジェクトを複数のAuthenticationProvider
がサポートする場合、Authentication
オブジェクトを正常に認証できる最初のオブジェクトがresult
を決定し、以前のサポートAuthenticationProvider
によってスローされた可能性のあるAuthenticationException
をオーバーライドします。認証に成功すると、後続のAuthenticationProvider
は試行されません。サポートするAuthenticationProvider
によって認証が成功しなかった場合、最後にスローされたAuthenticationException
が再スローされます。- 次で指定:
- インターフェース
AuthenticationManager
のauthenticate
- パラメーター:
authentication
- 認証リクエストオブジェクト。- 戻り値:
- 資格情報を含む完全に認証されたオブジェクト。
- 例外:
AuthenticationException
- 認証が失敗した場合。
getProviders
public java.util.List<AuthenticationProvider> getProviders()
setMessageSource
public void setMessageSource(org.springframework.context.MessageSource messageSource)
- 次で指定:
- インターフェース
org.springframework.context.MessageSourceAware
のsetMessageSource
setAuthenticationEventPublisher
public void setAuthenticationEventPublisher(AuthenticationEventPublisher eventPublisher)
setEraseCredentialsAfterAuthentication
public void setEraseCredentialsAfterAuthentication(boolean eraseSecretData)
設定されている場合、CredentialsContainer
インターフェースを実装する結果のAuthentication
は、authenticate()
メソッドから返される前にeraseCredentials
メソッドが呼び出されます。- パラメーター:
eraseSecretData
- 資格情報データをメモリに保持するには、false に設定します。デフォルトは true です。
isEraseCredentialsAfterAuthentication
public boolean isEraseCredentialsAfterAuthentication()