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