@abstractmethod<EOL><INDENT>def authenticate_account(self, authc_token):<DEDENT>
pass<EOL>
Authenticates an account based on the submitted ``AuthenticationToken``.

If the authentication is successful, the ``Account`` instance representing
data relevant to Yosai is returned.  The returned account is used by
higher-level components to construct a ``Subject`` representing a more
complete security-specific 'view' of an account that also allows access to
a ``Session``.

:param authc_token: any representation of an account's identifiers and
                    credentials submitted during an authentication attempt

:returns the authenticated account
:raises AuthenticationException: if there is any problem during the authentication process

  - See the specific exceptions listed below to as examples of what could happen
    in order to accurately handle these problems and to notify the user in an
    appropriate manner why the authentication attempt failed.  Realize an
    implementation of this interface may or may not throw those listed or may
    throw other AuthenticationExceptions, but the list shows the most common ones.