現象
タイトル通り。
一回目のAuthenticationProvider呼び出しでUsernamePasswordAuthenticationTokenを返して認証OKとしても、もう一度AuthenticationProviderが呼ばれて認証失敗となる。二回目の呼び出しではCredentialsがnullになるので認証失敗に終わる。
原因と解決策
java - spring security custom AuthenticationProvider is called twice and fails - Stack Overflow
UsernamePasswordAuthenticationTokenのコンストラクタに引数が3つあるやつを使用する。これを使うとisAuthenticated()がtrueを返すようになる。これで二回呼ばれなくなる。