public abstract class AbstractUserDetailsReactiveAuthenticationManager extends java.lang.Object implements ReactiveAuthenticationManager
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 |
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)
ReactiveAuthenticationManagerAuthenticationauthenticate in interface ReactiveAuthenticationManagerauthentication - 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 UserDetailsCheckerprotected abstract reactor.core.publisher.Mono<UserDetails> retrieveUser(java.lang.String username)
UserDetails from an
implementation-specific location.username - The username to retrieve