User-facing interface for authenticating users.

- `Anything`
  - `Object`
    - `Basic` ...and other supertypes
      - `AuthProvider`

- `AuthProvider`
  - `Basic`
    - `Identifiable`
    - `Object`
      - `Anything`

- `AuthProvider`
  - `ChainAuth`
  - `HtdigestAuth`
  - `JDBCAuth`
  - `JWTAuth`
  - `OAuth2Auth`
  - `ShiroAuth`

Initializer
`AuthProvider(AuthProvider unknown)`

Inherited Attributes
Attributes inherited from: `Object` `hash`, `string`

Methods
`authenticate` | `shared default void authenticate(Object authInfo, Anything(Throwable|User) resultHandler)` Authenticate a user. The first argument is a JSON object containing information for authenticating the user. What this actually contains depends on the specific implementation. In the case of a simple username/password based authentication it is likely to contain a JSON object with the following structure:
       {
         "username": "tim",
         "password": "mypassword"
       }
For other types of authentication it contain different information - for example a JWT token or OAuth bearer token. If the user is successfully authenticated a User object is passed to the handler in an async result. The user object can then be used for authorisation. Parameters: `authInfo` The auth information `resultHandler` The result handler

Inherited Methods
Methods inherited from: `Object` `equals`