私はSpring Securityで認証プロバイダを使用しました。私は2つの認証プロバイダを持っています:LocalAuthenticationProvider
とRemoteAuthenticationProvider
。ローカル認証が渡された場合、認証フローは、ローカルDBでそのSpring Securityは、最初のプロバイダが失敗した場合でも、別の認証プロバイダを呼び出します。
- アプリケーションをチェック資格
- ある 資格を認証するために
RESTful
Webサービスを呼び出す必要があります。 - ローカル認証が失敗した場合は、 認証に失敗し、応答
401
とします。
@Override protected void configure( AuthenticationManagerBuilder auth) throws Exception { auth.authenticationProvider(localProvider).authenticationProvider(remoteProvider); }
LocalAuthenticationProvider
資格が失敗した場合AuthenticationException
をスローします。資格情報がpassed
の場合、null
を返します。
私の問題は、RemoteAuthenticationProvider
でも、LocalAuthenticationProvider
は、failed
です。
RemoteAuthenticationProvider
をAuthenticationManagerBuilder
から削除すると、LocalAuthenticationProvider
もfailed
になります。
この認証フローをどのように達成できますか。これらの2つのプロバイダはお互いに依存しています。あなたの最初のプロバイダがAccountStatusException
をスローするようにした場合、認証が第二プロバイダに進まないであろうと思われるProviderManager
のJavadocを見てみると