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