Spring Security - Token based API auth & user/password authentication
I believe the error that you mention is just because the AbstractAuthenticationProcessingFilter
base class that you are using requires an AuthenticationManager
. If you aren't going to use it you can set it to a no-op, or just implement Filter
directly. If your Filter
can authenticate the request and sets up the SecurityContext
then usually the downstream processing will be skipped (it depends on the implementation of the downstream filters, but I don't see anything weird in your app, so they probably all behave that way).
If I were you I might consider putting the API endpoints in a completely separate filter chain (another WebSecurityConfigurerAdapter
bean). But that only makes things easier to read, not necessarily crucial.
You might find (as suggested in comments) that you end up reinventing the wheel, but no harm in trying, and you will probably learn more about Spring and Security in the process.
ADDITION: the github approach is quite interesting: users just use the token as a password in basic auth, and the server doesn't need a custom filter (BasicAuthenticationFilter
is fine).