Add the ability to set a HttpClientContext. That way, it becomes possible to use a preemptive basic authentication.
Example :

   @Bean
    public HttpClientConfig clientConfig() throws MalformedURLException {
        HttpClientConfig clientConfig = new HttpClientConfig.Builder(uri)
                .multiThreaded(true)
                .maxTotalConnection(500)
                .defaultMaxTotalConnectionPerRoute(100)
                .context(getHttpClientContext())
                .build();

        return clientConfig;
    }

    private HttpClientContext getHttpClientContext() throws MalformedURLException {
        // method to perform preemptive basic authentication : see http://www.baeldung.com/httpclient-4-basic-authentication
        URL url = new URL(uri);
        HttpHost targetHost = new HttpHost(url.getHost(), url.getPort(), url.getProtocol());
        CredentialsProvider credsProvider = new BasicCredentialsProvider();
        credsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(user, password));

        AuthCache authCache = new BasicAuthCache();
        authCache.put(targetHost, new BasicScheme());

        // Add AuthCache to the execution context
        final HttpClientContext context = HttpClientContext.create();
        context.setCredentialsProvider(credsProvider);
        context.setAuthCache(authCache);
        return context;
    }

    @Bean
    public JestClient jestClient() throws MalformedURLException {
        JestClientFactory factory = new JestClientFactory();
        factory.setHttpClientConfig(clientConfig());
        return factory.getObject();
   }