Search in sources :

Example 1 with BasicCredentialsProvider

use of org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider in project geo-platform by geosdi.

the class GPServerProxy method doPost.

/**
 * @param request
 * @param response
 * @throws ServletException
 * @throws IOException
 */
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.log("@@@@@@@@@@@@@@@@@@@@@Called " + this.getClass().getSimpleName() + " {}#doPost.");
    try {
        if ((request.getParameter("targetURL") != null) && (request.getParameter("targetURL") != "")) {
            CloseableHttpClient httpClient = HttpClients.custom().setConnectionReuseStrategy(new DefaultConnectionReuseStrategy()).setConnectionManager(createClientConnectionManager()).setDefaultCredentialsProvider(new BasicCredentialsProvider()).build();
            String targetUrl = request.getParameter("targetURL");
            URIBuilder uriBuilder = new URIBuilder(targetUrl);
            Enumeration<String> parametersName = request.getParameterNames();
            while (parametersName.hasMoreElements()) {
                String requestParamName = parametersName.nextElement();
                switch(requestParamName) {
                    case "targetURL":
                    case "v":
                    case "p":
                        break;
                    default:
                        uriBuilder.addParameter(requestParamName, request.getParameter(requestParamName));
                }
            }
            URI uri = uriBuilder.build();
            this.log("############################URI to call : " + uri.toString());
            HttpPost httpPost = new HttpPost(uri);
            if (request.getHeader("Content-Type") != null) {
                httpPost.setHeader("Content-Type", request.getContentType());
            }
            if (((request.getParameter("v") != null) && (request.getParameter("v") != "")) && ((request.getParameter("p") != null) && (request.getParameter("p") != ""))) {
                String userName = request.getParameter("v");
                String password = request.getParameter("p");
                String userpass = userName + ":" + password;
                this.log("@@@@@@@@@@@@@@@@@Trying to inject basicAuth with parameter : " + userpass);
                String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userpass.getBytes()));
                httpPost.setHeader(HttpHeaders.AUTHORIZATION, basicAuth);
            }
            int contentLength = request.getContentLength();
            if (contentLength > 0) {
                httpPost.setEntity(new StringEntity(new BufferedReader(new InputStreamReader(request.getInputStream(), UTF_8)).lines().collect(joining("\n"))));
            }
            CloseableHttpResponse httpClientResponse = httpClient.execute(httpPost);
            this.log("###########################STATUS_CODE : " + httpClientResponse.getCode());
            if (httpClientResponse.getCode() != 200) {
                String exceptionMessage = IOUtils.toString(httpClientResponse.getEntity().getContent(), UTF_8);
                this.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ExecutionError : " + exceptionMessage);
                response.setStatus(500);
            } else {
                OutputStream ostream = response.getOutputStream();
                copy(httpClientResponse.getEntity().getContent(), ostream);
                this.log("#########################EXECUTE SUCCESS for POST.");
            }
        }
    } catch (Exception ex) {
        response.setStatus(500);
        ex.printStackTrace();
    }
}
Also used : CloseableHttpClient(org.apache.hc.client5.http.impl.classic.CloseableHttpClient) HttpPost(org.apache.hc.client5.http.classic.methods.HttpPost) BasicCredentialsProvider(org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider) DefaultConnectionReuseStrategy(org.apache.hc.core5.http.impl.DefaultConnectionReuseStrategy) URI(java.net.URI) ServletException(javax.servlet.ServletException) URIBuilder(org.apache.hc.core5.net.URIBuilder) StringEntity(org.apache.hc.core5.http.io.entity.StringEntity) CloseableHttpResponse(org.apache.hc.client5.http.impl.classic.CloseableHttpResponse)

Example 2 with BasicCredentialsProvider

use of org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider in project geo-platform by geosdi.

the class GPServerProxy method doGet.

/**
 * @param request
 * @param response
 * @throws ServletException
 * @throws IOException
 */
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.log("@@@@@@@@@@@@@@@@@@@@@Called " + this.getClass().getSimpleName() + "#doGet.");
    try {
        if ((request.getParameter("targetURL") != null) && (request.getParameter("targetURL") != "")) {
            CloseableHttpClient httpClient = HttpClients.custom().setConnectionReuseStrategy(new DefaultConnectionReuseStrategy()).setConnectionManager(createClientConnectionManager()).setDefaultCredentialsProvider(new BasicCredentialsProvider()).build();
            String targetUrl = request.getParameter("targetURL");
            URIBuilder uriBuilder = new URIBuilder(targetUrl);
            Enumeration<String> parametersName = request.getParameterNames();
            while (parametersName.hasMoreElements()) {
                String requestParamName = parametersName.nextElement();
                switch(requestParamName) {
                    case "targetURL":
                    case "v":
                    case "p":
                        break;
                    default:
                        uriBuilder.addParameter(requestParamName, request.getParameter(requestParamName));
                }
            }
            URI uri = uriBuilder.build();
            this.log("############################URI to call : " + uri.toString());
            HttpGet httpGet = new HttpGet(uri);
            if (((request.getParameter("v") != null) && (request.getParameter("v") != "")) && ((request.getParameter("p") != null) && (request.getParameter("p") != ""))) {
                String userName = request.getParameter("v");
                String password = request.getParameter("p");
                String userpass = userName + ":" + password;
                this.log("@@@@@@@@@@@@@@@@@Trying to inject basicAuth with parameter : " + userpass);
                String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userpass.getBytes()));
                httpGet.setHeader(HttpHeaders.AUTHORIZATION, basicAuth);
            }
            CloseableHttpResponse httpClientResponse = httpClient.execute(httpGet);
            this.log("###########################STATUS_CODE : " + httpClientResponse.getCode());
            if (httpClientResponse.getCode() != 200) {
                String exceptionMessage = IOUtils.toString(httpClientResponse.getEntity().getContent(), UTF_8);
                this.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ExecutionError : " + exceptionMessage);
                response.setStatus(500);
            } else {
                OutputStream ostream = response.getOutputStream();
                copy(httpClientResponse.getEntity().getContent(), ostream);
                this.log("#########################EXECUTE SUCCESS for GET.");
            }
        }
    } catch (Exception ex) {
        response.setStatus(500);
        ex.printStackTrace();
    }
}
Also used : CloseableHttpClient(org.apache.hc.client5.http.impl.classic.CloseableHttpClient) BasicCredentialsProvider(org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider) HttpGet(org.apache.hc.client5.http.classic.methods.HttpGet) DefaultConnectionReuseStrategy(org.apache.hc.core5.http.impl.DefaultConnectionReuseStrategy) CloseableHttpResponse(org.apache.hc.client5.http.impl.classic.CloseableHttpResponse) URI(java.net.URI) ServletException(javax.servlet.ServletException) URIBuilder(org.apache.hc.core5.net.URIBuilder)

Example 3 with BasicCredentialsProvider

use of org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider in project wiremock by wiremock.

the class WireMockTestClient method httpClientWithPreemptiveAuth.

private static CloseableHttpClient httpClientWithPreemptiveAuth(HttpHost target, String username, String password) {
    BasicCredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(new AuthScope(target), new UsernamePasswordCredentials(username, password.toCharArray()));
    return HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build();
}
Also used : BasicCredentialsProvider(org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider) AuthScope(org.apache.hc.client5.http.auth.AuthScope) UsernamePasswordCredentials(org.apache.hc.client5.http.auth.UsernamePasswordCredentials)

Example 4 with BasicCredentialsProvider

use of org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider in project jahia by Jahia.

the class HttpClientService method initHttpClient.

private CloseableHttpClient initHttpClient(HttpClientBuilder builder, String protocol) {
    String host = System.getProperty(protocol + ".proxyHost");
    int port = Integer.getInteger(protocol + ".proxyPort", -1);
    HttpHost proxy = new HttpHost(protocol, host, port);
    builder.setProxy(proxy);
    String key = host + ':' + port;
    BasicCredentialsProvider credsProvider = null;
    String user = System.getProperty(protocol + ".proxyUser");
    if (StringUtils.isNotEmpty(user)) {
        credsProvider = new BasicCredentialsProvider();
        credsProvider.setCredentials(new AuthScope(proxy), new UsernamePasswordCredentials(user, System.getProperty(protocol + ".proxyPassword").toCharArray()));
        builder.setDefaultCredentialsProvider(credsProvider);
    }
    if (logger.isInfoEnabled()) {
        logger.info("Initialized HttpClient for {} protocol using proxy {} {} credentials", protocol.toUpperCase(), key, credsProvider != null ? "with" : "without");
    }
    CloseableHttpClient client = builder.build();
    httpClients.put(key, client);
    return client;
}
Also used : CloseableHttpClient(org.apache.hc.client5.http.impl.classic.CloseableHttpClient) BasicCredentialsProvider(org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider) HttpHost(org.apache.hc.core5.http.HttpHost) AuthScope(org.apache.hc.client5.http.auth.AuthScope) UsernamePasswordCredentials(org.apache.hc.client5.http.auth.UsernamePasswordCredentials)

Example 5 with BasicCredentialsProvider

use of org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider in project mercury by yellow013.

the class ClientConfiguration method main.

public static final void main(final String[] args) throws Exception {
    // Use custom message parser / writer to customize the way HTTP
    // messages are parsed from and written out to the data stream.
    final HttpMessageParserFactory<ClassicHttpResponse> responseParserFactory = new DefaultHttpResponseParserFactory() {

        @Override
        public HttpMessageParser<ClassicHttpResponse> create(final Http1Config h1Config) {
            final LineParser lineParser = new BasicLineParser() {

                @Override
                public Header parseHeader(final CharArrayBuffer buffer) {
                    try {
                        return super.parseHeader(buffer);
                    } catch (final ParseException ex) {
                        return new BasicHeader(buffer.toString(), null);
                    }
                }
            };
            return new DefaultHttpResponseParser(lineParser, DefaultClassicHttpResponseFactory.INSTANCE, h1Config);
        }
    };
    final HttpMessageWriterFactory<ClassicHttpRequest> requestWriterFactory = new DefaultHttpRequestWriterFactory();
    // Create HTTP/1.1 protocol configuration
    final Http1Config h1Config = Http1Config.custom().setMaxHeaderCount(200).setMaxLineLength(2000).build();
    // Create connection configuration
    final CharCodingConfig connectionConfig = CharCodingConfig.custom().setMalformedInputAction(CodingErrorAction.IGNORE).setUnmappableInputAction(CodingErrorAction.IGNORE).setCharset(StandardCharsets.UTF_8).build();
    // Use a custom connection factory to customize the process of
    // initialization of outgoing HTTP connections. Beside standard connection
    // configuration parameters HTTP connection factory can define message
    // parser / writer routines to be employed by individual connections.
    @SuppressWarnings("unused") final HttpConnectionFactory<ManagedHttpClientConnection> connFactory = new ManagedHttpClientConnectionFactory(h1Config, connectionConfig, requestWriterFactory, responseParserFactory);
    // Client HTTP connection objects when fully initialized can be bound to
    // an arbitrary network socket. The process of network socket initialization,
    // its connection to a remote address and binding to a local one is controlled
    // by a connection socket factory.
    // SSL context for secure connections can be created either based on
    // system or application specific properties.
    final SSLContext sslcontext = SSLContexts.createSystemDefault();
    // Create a registry of custom connection socket factories for supported
    // protocol schemes.
    final Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create().register("http", PlainConnectionSocketFactory.INSTANCE).register("https", new SSLConnectionSocketFactory(sslcontext)).build();
    // Use custom DNS resolver to override the system DNS resolution.
    final DnsResolver dnsResolver = new SystemDefaultDnsResolver() {

        @Override
        public InetAddress[] resolve(final String host) throws UnknownHostException {
            if (host.equalsIgnoreCase("myhost")) {
                return new InetAddress[] { InetAddress.getByAddress(new byte[] { 127, 0, 0, 1 }) };
            } else {
                return super.resolve(host);
            }
        }
    };
    // Create a connection manager with custom configuration.
    final PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry, PoolConcurrencyPolicy.STRICT, PoolReusePolicy.LIFO, TimeValue.ofMinutes(5), null, dnsResolver, null);
    // Create socket configuration
    final SocketConfig socketConfig = SocketConfig.custom().setTcpNoDelay(true).build();
    // Configure the connection manager to use socket configuration either
    // by default or for a specific host.
    connManager.setDefaultSocketConfig(socketConfig);
    // Validate connections after 1 sec of inactivity
    connManager.setValidateAfterInactivity(TimeValue.ofSeconds(10));
    // Configure total max or per route limits for persistent connections
    // that can be kept in the pool or leased by the connection manager.
    connManager.setMaxTotal(100);
    connManager.setDefaultMaxPerRoute(10);
    connManager.setMaxPerRoute(new HttpRoute(new HttpHost("somehost", 80)), 20);
    // Use custom cookie store if necessary.
    final CookieStore cookieStore = new BasicCookieStore();
    // Use custom credentials provider if necessary.
    final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
    // Create global request configuration
    final RequestConfig defaultRequestConfig = RequestConfig.custom().setCookieSpec(StandardCookieSpec.STRICT).setExpectContinueEnabled(true).setTargetPreferredAuthSchemes(Arrays.asList(StandardAuthScheme.NTLM, StandardAuthScheme.DIGEST)).setProxyPreferredAuthSchemes(Collections.singletonList(StandardAuthScheme.BASIC)).build();
    try (final CloseableHttpClient httpclient = HttpClients.custom().setConnectionManager(connManager).setDefaultCookieStore(cookieStore).setDefaultCredentialsProvider(credentialsProvider).setProxy(new HttpHost("myproxy", 8080)).setDefaultRequestConfig(defaultRequestConfig).build()) {
        final HttpGet httpget = new HttpGet("http://httpbin.org/get");
        // Request configuration can be overridden at the request level.
        // They will take precedence over the one set at the client level.
        final RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig).setConnectionRequestTimeout(Timeout.ofSeconds(5)).setConnectTimeout(Timeout.ofSeconds(5)).setProxy(new HttpHost("myotherproxy", 8080)).build();
        httpget.setConfig(requestConfig);
        // Execution context can be customized locally.
        final HttpClientContext context = HttpClientContext.create();
        // Contextual attributes set the local context level will take
        // precedence over those set at the client level.
        context.setCookieStore(cookieStore);
        context.setCredentialsProvider(credentialsProvider);
        System.out.println("Executing request " + httpget.getMethod() + " " + httpget.getUri());
        try (final CloseableHttpResponse response = httpclient.execute(httpget, context)) {
            System.out.println("----------------------------------------");
            System.out.println(response.getCode() + " " + response.getReasonPhrase());
            System.out.println(EntityUtils.toString(response.getEntity()));
            // Once the request has been executed the local context can
            // be used to examine updated state and various objects affected
            // by the request execution.
            // Last executed request
            context.getRequest();
            // Execution route
            context.getHttpRoute();
            // Auth exchanges
            context.getAuthExchanges();
            // Cookie origin
            context.getCookieOrigin();
            // Cookie spec used
            context.getCookieSpec();
            // User security token
            context.getUserToken();
        }
    }
}
Also used : CharCodingConfig(org.apache.hc.core5.http.config.CharCodingConfig) BasicCredentialsProvider(org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider) HttpGet(org.apache.hc.client5.http.classic.methods.HttpGet) CharArrayBuffer(org.apache.hc.core5.util.CharArrayBuffer) SystemDefaultDnsResolver(org.apache.hc.client5.http.SystemDefaultDnsResolver) SSLConnectionSocketFactory(org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory) ConnectionSocketFactory(org.apache.hc.client5.http.socket.ConnectionSocketFactory) SSLConnectionSocketFactory(org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory) PlainConnectionSocketFactory(org.apache.hc.client5.http.socket.PlainConnectionSocketFactory) BasicLineParser(org.apache.hc.core5.http.message.BasicLineParser) LineParser(org.apache.hc.core5.http.message.LineParser) HttpHost(org.apache.hc.core5.http.HttpHost) DefaultHttpResponseParser(org.apache.hc.core5.http.impl.io.DefaultHttpResponseParser) CloseableHttpResponse(org.apache.hc.client5.http.impl.classic.CloseableHttpResponse) ManagedHttpClientConnectionFactory(org.apache.hc.client5.http.impl.io.ManagedHttpClientConnectionFactory) ClassicHttpResponse(org.apache.hc.core5.http.ClassicHttpResponse) DnsResolver(org.apache.hc.client5.http.DnsResolver) SystemDefaultDnsResolver(org.apache.hc.client5.http.SystemDefaultDnsResolver) RequestConfig(org.apache.hc.client5.http.config.RequestConfig) CloseableHttpClient(org.apache.hc.client5.http.impl.classic.CloseableHttpClient) SocketConfig(org.apache.hc.core5.http.io.SocketConfig) HttpClientContext(org.apache.hc.client5.http.protocol.HttpClientContext) BasicLineParser(org.apache.hc.core5.http.message.BasicLineParser) SSLContext(javax.net.ssl.SSLContext) BasicCredentialsProvider(org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider) CredentialsProvider(org.apache.hc.client5.http.auth.CredentialsProvider) DefaultHttpRequestWriterFactory(org.apache.hc.core5.http.impl.io.DefaultHttpRequestWriterFactory) PoolingHttpClientConnectionManager(org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager) DefaultHttpResponseParserFactory(org.apache.hc.core5.http.impl.io.DefaultHttpResponseParserFactory) ManagedHttpClientConnection(org.apache.hc.client5.http.io.ManagedHttpClientConnection) HttpRoute(org.apache.hc.client5.http.HttpRoute) CookieStore(org.apache.hc.client5.http.cookie.CookieStore) BasicCookieStore(org.apache.hc.client5.http.cookie.BasicCookieStore) BasicCookieStore(org.apache.hc.client5.http.cookie.BasicCookieStore) ClassicHttpRequest(org.apache.hc.core5.http.ClassicHttpRequest) ParseException(org.apache.hc.core5.http.ParseException) InetAddress(java.net.InetAddress) Http1Config(org.apache.hc.core5.http.config.Http1Config) BasicHeader(org.apache.hc.core5.http.message.BasicHeader)

Aggregations

BasicCredentialsProvider (org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider)16 AuthScope (org.apache.hc.client5.http.auth.AuthScope)13 UsernamePasswordCredentials (org.apache.hc.client5.http.auth.UsernamePasswordCredentials)11 CloseableHttpClient (org.apache.hc.client5.http.impl.classic.CloseableHttpClient)8 CloseableHttpResponse (org.apache.hc.client5.http.impl.classic.CloseableHttpResponse)6 HttpHost (org.apache.hc.core5.http.HttpHost)6 HttpGet (org.apache.hc.client5.http.classic.methods.HttpGet)5 URI (java.net.URI)3 Credentials (org.apache.hc.client5.http.auth.Credentials)3 CredentialsStore (org.apache.hc.client5.http.auth.CredentialsStore)3 RequestConfig (org.apache.hc.client5.http.config.RequestConfig)3 SSLContext (javax.net.ssl.SSLContext)2 ServletException (javax.servlet.ServletException)2 AuthCache (org.apache.hc.client5.http.auth.AuthCache)2 CredentialsProvider (org.apache.hc.client5.http.auth.CredentialsProvider)2 BasicAuthCache (org.apache.hc.client5.http.impl.auth.BasicAuthCache)2 HttpClientContext (org.apache.hc.client5.http.protocol.HttpClientContext)2 DefaultConnectionReuseStrategy (org.apache.hc.core5.http.impl.DefaultConnectionReuseStrategy)2 URIBuilder (org.apache.hc.core5.net.URIBuilder)2 Exceptions.throwUnchecked (com.github.tomakehurst.wiremock.common.Exceptions.throwUnchecked)1