org.apache.hc.core5.http.io.support

## Class AbstractHttpServerAuthFilter<T>

- java.lang.Object
- - org.apache.hc.core5.http.io.support.AbstractHttpServerAuthFilter<T>

- Type Parameters:
    `T` - authorization token representation.
  All Implemented Interfaces:
    HttpFilterHandler

      @Contract(threading=STATELESS)
      public abstract class AbstractHttpServerAuthFilter<T>
      extends Object
      implements HttpFilterHandler

  Abstract HTTP request filter that implements standard HTTP authentication handshake.
  Since:
    5.0

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractHttpServerAuthFilter(boolean respondImmediately)`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract boolean` | `authenticate(T challengeResponse, URIAuthority authority, String requestUri, HttpContext context)` Authenticates the client using the authentication token sent by the client as a response to an authentication challenge.
    `protected abstract String` | `generateChallenge(T challengeResponse, URIAuthority authority, String requestUri, HttpContext context)` Generates an authentication challenge in case of unsuccessful authentication.
    `protected HttpEntity` | `generateResponseContent(HttpResponse unauthorized)` Generates response body for UNAUTHORIZED response.
    `void` | `handle(ClassicHttpRequest request, HttpFilterChain.ResponseTrigger responseTrigger, HttpContext context, HttpFilterChain chain)` Processes the incoming HTTP request and if processing has been completed submits a final response to the client.
    `protected abstract T` | `parseChallengeResponse(String authorizationValue, HttpContext context)` Parses authorization header value into an authentication token sent by the client as a response to an authentication challenge.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AbstractHttpServerAuthFilter

          protected AbstractHttpServerAuthFilter(boolean respondImmediately)

  - ### Method Detail

    - #### parseChallengeResponse

          protected abstract T parseChallengeResponse(String authorizationValue,
                                                      HttpContext context)
                                               throws HttpException

      Parses authorization header value into an authentication token sent by the client as a response to an authentication challenge.
      Parameters:
        `authorizationValue` - the authorization header value.
        `context` - the actual execution context.
      Returns:
        authorization token
      Throws:
        `HttpException` - in case of an HTTP protocol violation.

    - #### authenticate

          protected abstract boolean authenticate(T challengeResponse,
                                                  URIAuthority authority,
                                                  String requestUri,
                                                  HttpContext context)

      Authenticates the client using the authentication token sent by the client as a response to an authentication challenge.
      Parameters:
        `challengeResponse` - the authentication token sent by the client as a response to an authentication challenge.
        `authority` - the URI authority.
        `requestUri` - the request URI.
        `context` - the actual execution context.
      Returns:
        `true` if the client could be successfully authenticated `false` otherwise.

    - #### generateChallenge

          protected abstract String generateChallenge(T challengeResponse,
                                                      URIAuthority authority,
                                                      String requestUri,
                                                      HttpContext context)

      Generates an authentication challenge in case of unsuccessful authentication.
      Parameters:
        `challengeResponse` - the authentication token sent by the client as a response to an authentication challenge or `null` if the client has not sent any.
        `authority` - the URI authority.
        `requestUri` - the request URI.
        `context` - the actual execution context.
      Returns:
        an authorization challenge value.

    - #### generateResponseContent

          protected HttpEntity generateResponseContent(HttpResponse unauthorized)

      Generates response body for UNAUTHORIZED response.
      Parameters:
        `unauthorized` - the response to return as a result of authentication failure.
      Returns:
        the response content entity.

    - #### handle

          public final void handle(ClassicHttpRequest request,
                                   HttpFilterChain.ResponseTrigger responseTrigger,
                                   HttpContext context,
                                   HttpFilterChain chain)
                            throws HttpException,
                                   IOException

      Description copied from interface: `HttpFilterHandler`
      Processes the incoming HTTP request and if processing has been completed submits a final response to the client. The handler must not use the response trigger after passing control to the next filter with the `HttpFilterChain.proceed(ClassicHttpRequest, HttpFilterChain.ResponseTrigger, HttpContext)` method.
      Specified by:
        `handle` in interface `HttpFilterHandler`
      Parameters:
        `request` - the actual request.
        `responseTrigger` - the response trigger.
        `context` - the actual execution context.
        `chain` - the next element in the request processing chain.
      Throws:
        `HttpException` - in case of an HTTP protocol violation.
        `IOException` - in case of an I/O error.

Copyright © 2005–2021 The Apache Software Foundation. All rights reserved.