Package org.springframework.security.authentication

# Interface AuthenticationProvider

All Known Implementing Classes:
  `AbstractJaasAuthenticationProvider`, `AbstractUserDetailsAuthenticationProvider`, `AnonymousAuthenticationProvider`, `DaoAuthenticationProvider`, `DefaultJaasAuthenticationProvider`, `JaasAuthenticationProvider`, `OneTimeTokenAuthenticationProvider`, `RememberMeAuthenticationProvider`, `RunAsImplAuthenticationProvider`, `TestingAuthenticationProvider`

public interface AuthenticationProvider
Indicates a class can process a specific `Authentication` implementation.

## Method Summary

Modifier and Type
Method
Description
`Authentication`
`authenticate(Authentication authentication)`
Performs authentication with the same contract as `AuthenticationManager.authenticate(Authentication)` .
`boolean`
`supports(Class<?> authentication)`
Returns `true` if this `AuthenticationProvider` supports the indicated `Authentication` object.

## Method Details

### authenticate

Authentication authenticate(Authentication authentication) throws AuthenticationException
Performs authentication with the same contract as `AuthenticationManager.authenticate(Authentication)` .

Parameters:
  `authentication` - the authentication request object.
Returns:
  a fully authenticated object including credentials. May return `null` if the `AuthenticationProvider` is unable to support authentication of the passed `Authentication` object. In such a case, the next `AuthenticationProvider` that supports the presented `Authentication` class will be tried.
Throws:
  `AuthenticationException` - if authentication fails.

### supports

boolean supports(Class<?> authentication)
Returns `true` if this `AuthenticationProvider` supports the indicated `Authentication` object.

Returning `true` does not guarantee an `AuthenticationProvider` will be able to authenticate the presented `Authentication` object. It simply indicates it can support closer evaluation of it. An `AuthenticationProvider` can still return `null` from the `authenticate(Authentication)` method to indicate another `AuthenticationProvider` should be tried.

Selection of an `AuthenticationProvider` capable of performing authentication is conducted at runtime the `ProviderManager`.

Parameters:
  `authentication` -
Returns:
  `true` if the implementation can more closely evaluate the `Authentication` class presented