I have been working with Proxies as well. I am no expert, but I think your AuthScope is insufficient.
I have a different situation that you do. I override CredentialsProvider, which I don't think you need to do, but it does reveal some things when you do it that way. When an AuthScope comes into getCredentials(AuthScope a); it has a "scheme" associated with it. That scheme is matched against other schemes, such as AuthSchemes.DIGEST. You may be able to just change your code to create your AuthScope creation to something like: new AuthScope(new HttpHost("80.1.2.3", 3128), AuthScope.ANY_REALM, AuthScheme.DIGEST) If not, you can create your own CredentialsProvider. In the getCredentials() method, you can verify that it is using a DIGEST scheme and just return the credentials directly, or potentially put them in a private instance of BasicCredentialsProvider, using the passed in AuthScope as the parameter to setCredentials(). public Credentials getCredentials(AuthScope authscope) { Credentials rval = delegate.getCredentials(authscope); if (rval == null && AuthSchemes.DIGEST.equalsIgnoreCase(scheme)) } ... delegate.setProvider(authscope,rval) } } Hope this helps, Mark Disclaimer: The opinions provided herein do not necessarily state or reflect those of Donnell Systems, Inc.(DSI). DSI makes no warranty for and assumes no legal liability or responsibility for the posting. -----Original Message----- From: Mop Sophia [mailto:mopsop...@gmail.com] Sent: Monday, April 11, 2016 12:19 PM To: httpclient-users@hc.apache.org Subject: Proxy with digest authentication Hi, I try to do a request using a proxy with digest authentication but the authentication fails, here is the code : // Proxy credentials CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials(new AuthScope("80.1.2.3", 3128), new UsernamePasswordCredentials("proxy_user", "proxy_pass")); HttpHost proxy = new HttpHost("80.1.2.3", 3128); CloseableHttpClient httpclient = HttpClients.custom() .setSSLSocketFactory(sslsf) .setDefaultCredentialsProvider(credsProvider) .setProxy(proxy) .build(); HttpGet httpget = new HttpGet("https://myhost.com:8443"); HttpClientContext context = HttpClientContext.create(); CloseableHttpResponse resp = httpclient.execute(httpget, context); Log.d("TST", String.valueOf(resp.getStatusLine())); Log.d("TST", EntityUtils.toString(resp.getEntity())); AuthState proxyAuthState = context.getProxyAuthState(); Log.d("TST", "Proxy auth state: " + proxyAuthState.getState()); Log.d("TST", "Proxy auth scheme: " + proxyAuthState.getAuthScheme()); Log.d("TST", "Proxy auth credentials: " + proxyAuthState.getCredentials()); AuthState targetAuthState = context.getTargetAuthState(); Log.d("TST", "Target auth state: " + targetAuthState.getState()); Log.d("TST", "Target auth scheme: " + targetAuthState.getAuthScheme()); Log.d("TST", "Target auth credentials: " + targetAuthState.getCredentials()); Any idea, please ? Thanks, Stéphane