クラス 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, @Nullable AuthenticationManager parent) 提供されたパラメーターを使用してProviderManagerを作成しますProviderManager(AuthenticationProvider... providers) 指定されたAuthenticationProviderを使用してProviderManagerを構築しますメソッドのサマリー
修飾子と型メソッド説明voidauthenticate(Authentication authentication) 渡されたAuthenticationオブジェクトの認証を試みます。booleanvoidsetAuthenticationEventPublisher(AuthenticationEventPublisher eventPublisher) voidsetEraseCredentialsAfterAuthentication(boolean eraseSecretData) 設定されている場合、CredentialsContainerインターフェースを実装する結果のAuthenticationは、authenticate()メソッドから返される前にeraseCredentialsメソッドが呼び出されます。voidsetMessageSource(org.springframework.context.MessageSource messageSource)
フィールドの詳細
messages
protected org.springframework.context.support.MessageSourceAccessor messages
コンストラクターの詳細
ProviderManager
指定されたAuthenticationProviderを使用してProviderManagerを構築します- パラメーター:
providers- 使用するAuthenticationProvider
ProviderManager
指定されたAuthenticationProviderを使用してProviderManagerを構築します- パラメーター:
providers- 使用するAuthenticationProvider
ProviderManager
public ProviderManager(ListSE<AuthenticationProvider> providers, @Nullable AuthenticationManager parent) 提供されたパラメーターを使用してProviderManagerを作成します- パラメーター:
providers- 使用するAuthenticationProviderparent- フォールバックする親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()