Java
spring

spring securityで自前のAuthenticationProviderが二回呼ばれて認証失敗する

現象

タイトル通り。

一回目のAuthenticationProvider呼び出しでUsernamePasswordAuthenticationTokenを返して認証OKとしても、もう一度AuthenticationProviderが呼ばれて認証失敗となる。二回目の呼び出しではCredentialsがnullになるので認証失敗に終わる。

原因と解決策

java - spring security custom AuthenticationProvider is called twice and fails - Stack Overflow

UsernamePasswordAuthenticationTokenのコンストラクタに引数が3つあるやつを使用する。これを使うとisAuthenticated()がtrueを返すようになる。これで二回呼ばれなくなる。