public abstract class AbstractUserDetailsReactiveAuthenticationManager extends java.lang.Object implements ReactiveAuthenticationManager, org.springframework.context.MessageSourceAware
ReactiveAuthenticationManager
that allows subclasses to override and
work with UserDetails
objects.
Upon successful validation, a UsernamePasswordAuthenticationToken
will be
created and returned to the caller. The token will include as its principal either a
String
representation of the username, or the UserDetails
that was
returned from the authentication repository.
Modifier and Type | Field and Description |
---|---|
protected org.apache.commons.logging.Log |
logger |
protected org.springframework.context.support.MessageSourceAccessor |
messages |
Constructor and Description |
---|
AbstractUserDetailsReactiveAuthenticationManager() |
Modifier and Type | Method and Description |
---|---|
reactor.core.publisher.Mono<Authentication> |
authenticate(Authentication authentication)
Attempts to authenticate the provided
Authentication |
protected abstract reactor.core.publisher.Mono<UserDetails> |
retrieveUser(java.lang.String username)
Allows subclasses to retrieve the
UserDetails from an
implementation-specific location. |
void |
setMessageSource(org.springframework.context.MessageSource messageSource) |
void |
setPasswordEncoder(PasswordEncoder passwordEncoder)
The
PasswordEncoder that is used for validating the password. |
void |
setPostAuthenticationChecks(UserDetailsChecker postAuthenticationChecks)
Sets the strategy which will be used to validate the loaded UserDetails
object after authentication occurs.
|
void |
setScheduler(reactor.core.scheduler.Scheduler scheduler)
Sets the
Scheduler used by the
UserDetailsRepositoryReactiveAuthenticationManager . |
void |
setUserDetailsPasswordService(ReactiveUserDetailsPasswordService userDetailsPasswordService)
Sets the service to use for upgrading passwords on successful authentication.
|
protected final org.apache.commons.logging.Log logger
protected org.springframework.context.support.MessageSourceAccessor messages
public AbstractUserDetailsReactiveAuthenticationManager()
public reactor.core.publisher.Mono<Authentication> authenticate(Authentication authentication)
ReactiveAuthenticationManager
Authentication
authenticate
in interface ReactiveAuthenticationManager
authentication
- the Authentication
to testAuthentication
is returned. If
authentication cannot be determined, an empty Mono is returned. If authentication
fails, a Mono error is returned.public void setPasswordEncoder(PasswordEncoder passwordEncoder)
PasswordEncoder
that is used for validating the password. The default
is PasswordEncoderFactories.createDelegatingPasswordEncoder()
passwordEncoder
- the PasswordEncoder
to use. Cannot be nullpublic void setScheduler(reactor.core.scheduler.Scheduler scheduler)
Scheduler
used by the
UserDetailsRepositoryReactiveAuthenticationManager
. The default is
Schedulers.newParallel(String)
because modern password encoding is a CPU
intensive task that is non blocking. This means validation is bounded by the number
of CPUs. Some applications may want to customize the Scheduler
. For
example, if users are stuck using the insecure
NoOpPasswordEncoder
they might
want to leverage Schedulers.immediate()
.scheduler
- the Scheduler
to use. Cannot be null.public void setUserDetailsPasswordService(ReactiveUserDetailsPasswordService userDetailsPasswordService)
userDetailsPasswordService
- the service to usepublic void setPostAuthenticationChecks(UserDetailsChecker postAuthenticationChecks)
postAuthenticationChecks
- The UserDetailsChecker
public void setMessageSource(org.springframework.context.MessageSource messageSource)
setMessageSource
in interface org.springframework.context.MessageSourceAware
protected abstract reactor.core.publisher.Mono<UserDetails> retrieveUser(java.lang.String username)
UserDetails
from an
implementation-specific location.username
- The username to retrieve