If a server supports NTLM and Kerberos authentication, but when setting up the 
client I only provide basic credentials I get a log for each of the NTLM and 
NEGOTIATE authentication schemes.

Taking the example from : 
https://hc.apache.org/httpcomponents-client-4.3.x/httpclient/examples/org/apache/http/examples/client/ClientAuthentication.java

    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(
            new AuthScope(null, -1),
            new UsernamePasswordCredentials(restUser, restPass));
    CloseableHttpClient client = HttpClients.custom()
            .setDefaultCredentialsProvider(credsProvider)
            .build();

Use of the above client will produce the following warnings, though requests 
succeed fine through basic authentication:

    WARN  o.a.http.impl.auth.HttpAuthenticator - NEGOTIATE authentication 
error: Invalid name provided (Mechanism level: KrbException: Cannot locate 
default realm)
    WARN  o.a.http.impl.auth.HttpAuthenticator - NTLM authentication error: 
Credentials cannot be used for NTLM authentication: 
org.apache.http.auth.UsernamePasswordCredentials

So I figured after searching through the builder method that I'd supply  an 
auth provider with only basic support:

    Lookup<AuthSchemeProvider> authProviders = 
RegistryBuilder.<AuthSchemeProvider>create()
            .register(AuthSchemes.BASIC, new BasicSchemeFactory())
            .build();
    CloseableHttpClient client = HttpClients.custom()
            .setDefaultCredentialsProvider(credsProvider)
            .setDefaultAuthSchemeRegistry(authProviders)
            .build();

But now I get a different warning about the scheme's no longer being enabled.

    WARN  o.a.h.i.c.TargetAuthenticationStrategy - Authentication scheme 
negotiate not supported
    WARN  o.a.h.i.c.TargetAuthenticationStrategy - Authentication scheme NTLM 
not supported

How do I simply get rid of these warnings and only get the client to use the 
basic scheme that I've configured?

Reply via email to