DaoAuthenticationProvider
DaoAuthenticationProvider
is an AuthenticationProvider
implementation that uses a UserDetailsService
and PasswordEncoder
to authenticate a username and password.
This section examines how DaoAuthenticationProvider
works within Spring Security.
The following figure explains the workings of the AuthenticationManager
in figures from the Reading the Username & Password section.
DaoAuthenticationProvider
Usage The authentication Filter
from the Reading the Username & Password section passes a UsernamePasswordAuthenticationToken
to the AuthenticationManager
, which is implemented by ProviderManager
.
The ProviderManager
is configured to use an AuthenticationProvider of type DaoAuthenticationProvider
.
DaoAuthenticationProvider
looks up the UserDetails
from the UserDetailsService
.
DaoAuthenticationProvider
uses the PasswordEncoder
to validate the password on the UserDetails
returned in the previous step.
When authentication is successful, the Authentication
that is returned is of type UsernamePasswordAuthenticationToken
and has a principal that is the UserDetails
returned by the configured UserDetailsService
.
Ultimately, the returned UsernamePasswordAuthenticationToken
is set on the SecurityContextHolder
by the authentication Filter
.