Can someone tell me the difference between an AuthenticationManager and an AuthenticationProvider in Spring Security?
How are they used and how
From spring reference
The
AuthenticationManageris just an interface, so the implementation can be anything we chooseThe default implementation in Spring Security is called
ProviderManagerand rather than handling the authentication request itself, it delegates to a list of configuredAuthenticationProviders, each of which is queried in turn to see if it can perform the authentication. Each provider will either throw an exception or return a fully populatedAuthenticationobject.
Also if you check the source code for AuthenticationManager, ProviderManager and AuthenticationProvider you can see this clearly.
ProviderManager implements the AuthenticationManager interface and it has list of AuthenticationProviders. So if you want to have custom authentication mechanism, you'll need to implement new AuthenticationProvider.