Authenticates a user with the given request. If a successful authentication is
returned, the object must be an instance of Authentication.
Publishers MUST emit cold observables! This method will be called for
all authenticators for each authentication request and it is assumed no work
will be done until the publisher is subscribed to.