AuthenticationProvider is an interface for authenticating a user
using a specific implementation of a specific authentication
mechanism. A class implementing this interface may support the SHA
password authentication mechanism for example.
Authenticates a user with the given Credentials. The success
or failure of the authentication and the reason for failure
(if any) is returned to the caller.
Parameters:
userCredentials - the user's credentials to be
authenticated.