Create a Filter that performs authentication checks on incoming HTTP requests.
If the authentication succeeds, the Filter should set the "Druid-Authentication-Result" attribute in the request,
containing an AuthenticationResult that represents the authenticated identity of the requester, along with
the name of the Authorizer instance that should authorize the request. An Authenticator may choose to
add a Map context to the authentication result, containing additional information to be
used by the Authorizer. The contents of this map are left for Authenticator/Authorizer implementors to decide.
If the "Druid-Authentication-Result" attribute is already set (i.e., request has been authenticated by an
earlier Filter), this Filter should skip any authentication checks and proceed to the next Filter.
If a filter cannot recognize a request's format (e.g., the request does not have credentials compatible
with a filter's authentication scheme), the filter should not send an error response, allowing other
filters to handle the request. A challenge response will be sent if the filter chain is exhausted.
If the authentication fails (i.e., a filter recognized the authentication scheme of a request, but the credentials
failed to authenticate successfully) the Filter should send an error response, without needing to proceed to
other filters in the chain..