On 2/9/2022 5:15 PM, Naber, Peter wrote:
Hi,
I use the HttpCacheContext but I think with the httpclient5 the preemtive
authentication is implemented the same way.
public HttpCacheContext getHttpCacheContext(final URL aURL) throws
Exception {
final HttpHost targetHost = new HttpHost(aURL.getProtocol(),
aURL.getHost(), aURL.getPort()==-1?aURL.getDefaultPort():aURL.getPort());
final HttpCacheContext context = HttpCacheContext.create();
final AuthCache authCache = new BasicAuthCache();
if (this.getPreAuth() && this.getUser()!= null &&
this.getPassword()!=null ) {
if (this.getAuthScheme() == AuthScheme.BASIC) {
final BasicScheme basicAuth = new BasicScheme();
basicAuth.initPreemptive(
new
UsernamePasswordCredentials(this.getUser(), this.getPassword().toCharArray()));
authCache.put(targetHost, basicAuth);
} else if (this.getAuthScheme() == AuthScheme.DIGEST) {
final DigestScheme digestScheme = new
DigestScheme();
final UsernamePasswordCredentials creds = new
UsernamePasswordCredentials(this.replace(this.getUser()),
this.replace(this.getPassword()).toCharArray());
digestScheme.initPreemptive(creds,
UUID.randomUUID().toString().replaceAll("-", ""), "vectorius");
authCache.put(targetHost, digestScheme);
}
context.setAuthCache(authCache);
}
context.setCredentialsProvider(this.getCredentialsProvider(aURL));
return context;
}
regards,
Peter
Christophe
If you still think there is a problem with authentication state caching
in HttpClient 5, please produce two wire / context logs, one generated
with HttpClient 4 and another one with HttpClient 5. Please do redact
security sensitive bits but please keep the logs complete.
Oleg
-----Ursprüngliche Nachricht-----
Von: Christophe Darville <c...@internetvista.com>
Gesendet: Mittwoch, 9. Februar 2022 17:00
An: HttpClient User Discussion <httpclient-users@hc.apache.org>
Betreff: Preemptive authentication in Http Client 5 Async
Hi,
I am trying to make preemptive authentication in HttpClient 5 Async mode using
the following code, but I does not work, first request is still without
authentication and the authentication is done on the second request :
HttpClientContext httpContext = HttpClientContext.create();
CredentialsProvider credentialsProvider = getCredentialsProvider();
if (preemptive) {
URI uri = URI.create(url);
HttpHost targetHost = new HttpHost(uri.getScheme(),
uri.getHost(), uri.getPort());
AuthCache authCache = new BasicAuthCache();
BasicScheme basicAuth = new BasicScheme();
authCache.put(targetHost, basicAuth);
httpContext.setAuthCache(authCache);
}
httpContext.setCredentialsProvider(credentialsProvider);
This code was working in httpClient 4. Any suggestion on how to make preemptive
authentication work in HttpClient5 Async ?
Thank you,
Christophe
---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
For additional commands, e-mail: httpclient-users-h...@hc.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org
For additional commands, e-mail: httpclient-users-h...@hc.apache.org