Search in sources :

Example 1 with AbstractHttpServerAuthFilter

use of org.apache.hc.core5.http.io.support.AbstractHttpServerAuthFilter in project httpcomponents-core by apache.

the class ClassicServerFilterExample method main.

public static void main(final String[] args) throws Exception {
    int port = 8080;
    if (args.length >= 1) {
        port = Integer.parseInt(args[0]);
    }
    final SocketConfig socketConfig = SocketConfig.custom().setSoTimeout(15, TimeUnit.SECONDS).setTcpNoDelay(true).build();
    final HttpServer server = ServerBootstrap.bootstrap().setListenerPort(port).setSocketConfig(socketConfig).replaceFilter(StandardFilter.EXPECT_CONTINUE.name(), new AbstractHttpServerAuthFilter<String>(false) {

        @Override
        protected String parseChallengeResponse(final String authorizationValue, final HttpContext context) throws HttpException {
            return authorizationValue;
        }

        @Override
        protected boolean authenticate(final String challengeResponse, final URIAuthority authority, final String requestUri, final HttpContext context) {
            return "let me pass".equals(challengeResponse);
        }

        @Override
        protected String generateChallenge(final String challengeResponse, final URIAuthority authority, final String requestUri, final HttpContext context) {
            return "who goes there?";
        }
    }).addFilterFirst("my-filter", (request, responseTrigger, context, chain) -> {
        if (request.getRequestUri().equals("/back-door")) {
            final ClassicHttpResponse response = new BasicClassicHttpResponse(HttpStatus.SC_OK);
            response.setEntity(new StringEntity("Welcome", ContentType.TEXT_PLAIN));
            responseTrigger.submitResponse(response);
        } else {
            chain.proceed(request, new HttpFilterChain.ResponseTrigger() {

                @Override
                public void sendInformation(final ClassicHttpResponse response) throws HttpException, IOException {
                    responseTrigger.sendInformation(response);
                }

                @Override
                public void submitResponse(final ClassicHttpResponse response) throws HttpException, IOException {
                    response.addHeader("X-Filter", "My-Filter");
                    responseTrigger.submitResponse(response);
                }
            }, context);
        }
    }).register("*", (request, response, context) -> {
        // do something useful
        response.setCode(HttpStatus.SC_OK);
        response.setEntity(new StringEntity("Hello"));
    }).create();
    server.start();
    Runtime.getRuntime().addShutdownHook(new Thread(() -> server.close(CloseMode.GRACEFUL)));
    System.out.println("Listening on port " + port);
    server.awaitTermination(TimeValue.MAX_VALUE);
}
Also used : BasicClassicHttpResponse(org.apache.hc.core5.http.message.BasicClassicHttpResponse) ClassicHttpResponse(org.apache.hc.core5.http.ClassicHttpResponse) HttpException(org.apache.hc.core5.http.HttpException) TimeValue(org.apache.hc.core5.util.TimeValue) HttpContext(org.apache.hc.core5.http.protocol.HttpContext) IOException(java.io.IOException) SocketConfig(org.apache.hc.core5.http.io.SocketConfig) BasicClassicHttpResponse(org.apache.hc.core5.http.message.BasicClassicHttpResponse) TimeUnit(java.util.concurrent.TimeUnit) HttpServer(org.apache.hc.core5.http.impl.bootstrap.HttpServer) AbstractHttpServerAuthFilter(org.apache.hc.core5.http.io.support.AbstractHttpServerAuthFilter) URIAuthority(org.apache.hc.core5.net.URIAuthority) ServerBootstrap(org.apache.hc.core5.http.impl.bootstrap.ServerBootstrap) ContentType(org.apache.hc.core5.http.ContentType) ClassicHttpResponse(org.apache.hc.core5.http.ClassicHttpResponse) HttpFilterChain(org.apache.hc.core5.http.io.HttpFilterChain) CloseMode(org.apache.hc.core5.io.CloseMode) StringEntity(org.apache.hc.core5.http.io.entity.StringEntity) HttpStatus(org.apache.hc.core5.http.HttpStatus) StandardFilter(org.apache.hc.core5.http.impl.bootstrap.StandardFilter) URIAuthority(org.apache.hc.core5.net.URIAuthority) SocketConfig(org.apache.hc.core5.http.io.SocketConfig) HttpContext(org.apache.hc.core5.http.protocol.HttpContext) IOException(java.io.IOException) AbstractHttpServerAuthFilter(org.apache.hc.core5.http.io.support.AbstractHttpServerAuthFilter) StringEntity(org.apache.hc.core5.http.io.entity.StringEntity) HttpServer(org.apache.hc.core5.http.impl.bootstrap.HttpServer) HttpException(org.apache.hc.core5.http.HttpException) HttpFilterChain(org.apache.hc.core5.http.io.HttpFilterChain) BasicClassicHttpResponse(org.apache.hc.core5.http.message.BasicClassicHttpResponse)

Aggregations

IOException (java.io.IOException)1 TimeUnit (java.util.concurrent.TimeUnit)1 ClassicHttpResponse (org.apache.hc.core5.http.ClassicHttpResponse)1 ContentType (org.apache.hc.core5.http.ContentType)1 HttpException (org.apache.hc.core5.http.HttpException)1 HttpStatus (org.apache.hc.core5.http.HttpStatus)1 HttpServer (org.apache.hc.core5.http.impl.bootstrap.HttpServer)1 ServerBootstrap (org.apache.hc.core5.http.impl.bootstrap.ServerBootstrap)1 StandardFilter (org.apache.hc.core5.http.impl.bootstrap.StandardFilter)1 HttpFilterChain (org.apache.hc.core5.http.io.HttpFilterChain)1 SocketConfig (org.apache.hc.core5.http.io.SocketConfig)1 StringEntity (org.apache.hc.core5.http.io.entity.StringEntity)1 AbstractHttpServerAuthFilter (org.apache.hc.core5.http.io.support.AbstractHttpServerAuthFilter)1 BasicClassicHttpResponse (org.apache.hc.core5.http.message.BasicClassicHttpResponse)1 HttpContext (org.apache.hc.core5.http.protocol.HttpContext)1 CloseMode (org.apache.hc.core5.io.CloseMode)1 URIAuthority (org.apache.hc.core5.net.URIAuthority)1 TimeValue (org.apache.hc.core5.util.TimeValue)1