# Functions
NewAuthenticationInfo method creates an `AuthenticationInfo` instance with zero values.
# Variables
ErrAuthenticationFailed error is returned when user authentication fails; such as subject password doesn't match, is-locked or is-expired.
ErrAuthenticatorIsNil error is returned when given authenticator is nil.
ErrInternalServerError error is returned when we specifically want to return a 500 response code.
ErrPrincipalIsNil error is returned when given principal provider is nil.
ErrServiceUnavailable error is returned when we specifically want to return a 503 response code.
ErrSubjectNotExists error is returned when Subject is not exists in the application datasource.
# Structs
AuthenticationInfo represents a Subject's (aka user's) stored account information relevant to the authentication/log-in process only.
AuthenticationToken is an account's principals and supporting credentials submitted by a user during an authentication attempt.
Principal struct holds the principal associated with a corresponding Subject.
# Interfaces
Authenticator interface is used to provide authentication information of application during a login.
PrincipalProvider interface is implemented to provide Subject's principals where authentication is done third party, for e.g.