クラス ProviderManager
- 実装されたすべてのインターフェース:
org.springframework.beans.factory.Aware
、org.springframework.beans.factory.InitializingBean
、org.springframework.context.MessageSourceAware
、AuthenticationManager
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
から取得するときに、認証失敗イベントも発行することに注意してください。この状況では、通常、親はイベントを公開するように構成しないでください。そうしないと、重複が発生します。
フィールドサマリー
コンストラクターのサマリー
コンストラクター説明ProviderManager
(ListSE<AuthenticationProvider> providers) 指定されたAuthenticationProvider
を使用してProviderManager
を構築しますProviderManager
(ListSE<AuthenticationProvider> providers, AuthenticationManager parent) 提供されたパラメーターを使用してProviderManager
を作成しますProviderManager
(AuthenticationProvider... providers) 指定されたAuthenticationProvider
を使用してProviderManager
を構築しますメソッドのサマリー
修飾子と型メソッド説明void
authenticate
(Authentication authentication) 渡されたAuthentication
オブジェクトの認証を試みます。boolean
void
setAuthenticationEventPublisher
(AuthenticationEventPublisher eventPublisher) void
setEraseCredentialsAfterAuthentication
(boolean eraseSecretData) 設定されている場合、CredentialsContainer
インターフェースを実装する結果のAuthentication
は、authenticate()
メソッドから返される前にeraseCredentials
メソッドが呼び出されます。void
setMessageSource
(org.springframework.context.MessageSource messageSource)
フィールドの詳細
messages
protected org.springframework.context.support.MessageSourceAccessor messages
コンストラクターの詳細
ProviderManager
指定されたAuthenticationProvider
を使用してProviderManager
を構築します- パラメーター:
providers
- 使用するAuthenticationProvider
ProviderManager
指定されたAuthenticationProvider
を使用してProviderManager
を構築します- パラメーター:
providers
- 使用するAuthenticationProvider
ProviderManager
提供されたパラメーターを使用してProviderManager
を作成します- パラメーター:
providers
- 使用するAuthenticationProvider
parent
- フォールバックする親AuthenticationManager
メソッドの詳細
afterPropertiesSet
public void afterPropertiesSet()- 次で指定:
- インターフェース
org.springframework.beans.factory.InitializingBean
のafterPropertiesSet
authenticate
渡されたAuthentication
オブジェクトの認証を試みます。AuthenticationProvider
のリストは、AuthenticationProvider
が、渡されたAuthentication
オブジェクトの型を認証できることを示すまで、連続して試行されます。次に、そのAuthenticationProvider
で認証が試行されます。渡された
Authentication
オブジェクトを複数のAuthenticationProvider
がサポートする場合、Authentication
オブジェクトを正常に認証できる最初のオブジェクトがresult
を決定し、以前のサポートAuthenticationProvider
によってスローされた可能性のあるAuthenticationException
をオーバーライドします。認証に成功すると、後続のAuthenticationProvider
は試行されません。サポートするAuthenticationProvider
によって認証が成功しなかった場合、最後にスローされたAuthenticationException
が再スローされます。- 次で指定:
- インターフェース
AuthenticationManager
のauthenticate
- パラメーター:
authentication
- 認証リクエストオブジェクト。- 戻り値:
- 資格情報を含む完全に認証されたオブジェクト。
- 例外:
AuthenticationException
- 認証が失敗した場合。
getProviders
setMessageSource
public void setMessageSource(org.springframework.context.MessageSource messageSource) - 次で指定:
- インターフェース
org.springframework.context.MessageSourceAware
のsetMessageSource
setAuthenticationEventPublisher
setEraseCredentialsAfterAuthentication
public void setEraseCredentialsAfterAuthentication(boolean eraseSecretData) 設定されている場合、CredentialsContainer
インターフェースを実装する結果のAuthentication
は、authenticate()
メソッドから返される前にeraseCredentials
メソッドが呼び出されます。- パラメーター:
eraseSecretData
- 資格情報データをメモリに保持するには、false に設定します。デフォルトは true です。
isEraseCredentialsAfterAuthentication
public boolean isEraseCredentialsAfterAuthentication()