|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.acegisecurity.providers.dao.AbstractUserDetailsAuthenticationProvider
org.acegisecurity.providers.dao.DaoAuthenticationProvider
public class DaoAuthenticationProvider
An AuthenticationProvider implementation that retrieves user details
from an UserDetailsService.
| Field Summary |
|---|
| Fields inherited from class org.acegisecurity.providers.dao.AbstractUserDetailsAuthenticationProvider |
|---|
messages |
| Constructor Summary | |
|---|---|
DaoAuthenticationProvider()
|
|
| Method Summary | |
|---|---|
protected void |
additionalAuthenticationChecks(UserDetails userDetails,
UsernamePasswordAuthenticationToken authentication)
Allows subclasses to perform any additional checks of a returned (or cached) UserDetails for a given authentication request. |
protected void |
doAfterPropertiesSet()
|
PasswordEncoder |
getPasswordEncoder()
|
SaltSource |
getSaltSource()
|
UserDetailsService |
getUserDetailsService()
|
boolean |
isHideUserNotFoundExceptions()
|
protected UserDetails |
retrieveUser(String username,
UsernamePasswordAuthenticationToken authentication)
Allows subclasses to actually retrieve the UserDetails from
an implementation-specific location, with the option of throwing an
AuthenticationException immediately if the presented
credentials are incorrect (this is especially useful if it is necessary
to bind to a resource as the user in order to obtain or generate a
UserDetails). |
void |
setHideUserNotFoundExceptions(boolean hideUserNotFoundExceptions)
By default the DaoAuthenticationProvider throws a
BadCredentialsException if a username is not found or
the password is incorrect. |
void |
setPasswordEncoder(PasswordEncoder passwordEncoder)
Sets the PasswordEncoder instance to be used to encode and validate passwords. |
void |
setSaltSource(SaltSource saltSource)
The source of salts to use when decoding passwords. |
void |
setUserDetailsService(UserDetailsService authenticationDao)
|
| Methods inherited from class org.acegisecurity.providers.dao.AbstractUserDetailsAuthenticationProvider |
|---|
afterPropertiesSet, authenticate, createSuccessAuthentication, getUserCache, isForcePrincipalAsString, setForcePrincipalAsString, setMessageSource, setUserCache, supports |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public DaoAuthenticationProvider()
| Method Detail |
|---|
protected void additionalAuthenticationChecks(UserDetails userDetails,
UsernamePasswordAuthenticationToken authentication)
throws AuthenticationException
AbstractUserDetailsAuthenticationProviderUserDetails for a given authentication request.
Generally a subclass will at least compare the Authentication.getCredentials() with a UserDetails.getPassword(). If custom logic is needed to compare
additional properties of UserDetails and/or
UsernamePasswordAuthenticationToken, these should also
appear in this method.
additionalAuthenticationChecks in class AbstractUserDetailsAuthenticationProvideruserDetails - as retrieved from the AbstractUserDetailsAuthenticationProvider.retrieveUser(String,
UsernamePasswordAuthenticationToken) or UserCacheauthentication - the current request that needs to be authenticated
AuthenticationException - AuthenticationException if the
credentials could not be validated (generally a
BadCredentialsException, an
AuthenticationServiceException)
protected void doAfterPropertiesSet()
throws Exception
doAfterPropertiesSet in class AbstractUserDetailsAuthenticationProviderExceptionpublic UserDetailsService getUserDetailsService()
public PasswordEncoder getPasswordEncoder()
public SaltSource getSaltSource()
public boolean isHideUserNotFoundExceptions()
protected final UserDetails retrieveUser(String username,
UsernamePasswordAuthenticationToken authentication)
throws AuthenticationException
AbstractUserDetailsAuthenticationProviderUserDetails from
an implementation-specific location, with the option of throwing an
AuthenticationException immediately if the presented
credentials are incorrect (this is especially useful if it is necessary
to bind to a resource as the user in order to obtain or generate a
UserDetails).
Subclasses are not required to perform any caching, as the
AbstractUserDetailsAuthenticationProvider will by default
cache the UserDetails. The caching of
UserDetails does present additional complexity as this
means subsequent requests that rely on the cache will need to still
have their credentials validated, even if the correctness of
credentials was assured by subclasses adopting a binding-based strategy
in this method. Accordingly it is important that subclasses either
disable caching (if they want to ensure that this method is the only
method that is capable of authenticating a request, as no
UserDetails will ever be cached) or ensure subclasses
implement AbstractUserDetailsAuthenticationProvider.additionalAuthenticationChecks(UserDetails,
UsernamePasswordAuthenticationToken) to compare the credentials of a
cached UserDetails with subsequent authentication
requests.
Most of the time subclasses will not perform credentials inspection in
this method, instead performing it in AbstractUserDetailsAuthenticationProvider.additionalAuthenticationChecks(UserDetails,
UsernamePasswordAuthenticationToken) so that code related to
credentials validation need not be duplicated across two methods.
retrieveUser in class AbstractUserDetailsAuthenticationProviderusername - The username to retrieveauthentication - The authentication request, which subclasses
may need to perform a binding-based retrieval of the
UserDetails
null - instead an
exception should the thrown)
AuthenticationException - if the credentials could not be
validated (generally a BadCredentialsException, an
AuthenticationServiceException or
UserNotFoundException)public void setUserDetailsService(UserDetailsService authenticationDao)
public void setHideUserNotFoundExceptions(boolean hideUserNotFoundExceptions)
DaoAuthenticationProvider throws a
BadCredentialsException if a username is not found or
the password is incorrect. Setting this property to
false will cause
UsernameNotFoundExceptions to be thrown instead for
the former. Note this is considered less secure than throwing
BadCredentialsException for both exceptions.
hideUserNotFoundExceptions - set to false if you
wish UsernameNotFoundExceptions to be thrown
instead of the non-specific
BadCredentialsException (defaults to
true)public void setPasswordEncoder(PasswordEncoder passwordEncoder)
PlaintextPasswordEncoder will be
used by default.
passwordEncoder - The passwordEncoder to usepublic void setSaltSource(SaltSource saltSource)
null is a valid value, meaning the
DaoAuthenticationProvider will present
null to the relevant PasswordEncoder.
saltSource - to use when attempting to decode passwords via the
PasswordEncoder
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||