Исходя из моих знаний, переопределение параметров BindingProvider НЕ устанавливает требуемые имя пользователя и пароль. Самый простой способ доказать это состоит в том, что нет никакого способа передать доменное имя через переопределение BP.
Я видел несколько публикаций в Интернете, предлагающих способ, аналогичный предложенному Марселем Леви выше, использовать экземпляр аутентификатора NTLM (который определен в соответствии с документацией JAVA 6, доступной в Oracle). Но это решение не сработало для меня (я разрабатывал отдельную программу, независимую от логики сервера приложений).
Я погуглил и попробовал множество решений этой проблемы .. очевидно, самый простой код, который работает, как показано ниже, с использованием библиотеки JCIFS
//Set the jcifs properties
jcifs.Config.setProperty("jcifs.smb.client.domain", "domainname");
jcifs.Config.setProperty("jcifs.netbios.wins", "xxx.xxx.xxx.xxx");
jcifs.Config.setProperty("jcifs.smb.client.soTimeout", "300000"); // 5 minutes
jcifs.Config.setProperty("jcifs.netbios.cachePolicy", "1200"); // 20 minutes
jcifs.Config.setProperty("jcifs.smb.client.username", "username");
jcifs.Config.setProperty("jcifs.smb.client.password", "password");
//Register the jcifs URL handler to enable NTLM
jcifs.Config.registerSmbURLHandler();
Очевидно, что в CXF 3.0 нет допустимого способа настройки HTTP-клиента (4.3.x) с экземпляром NTCredentials. Пожалуйста, обратитесь к ошибке https://issues.apache.org/jira/browse/CXF-5671
Кстати, если у вас есть простое сообщение, которое нужно передать, просто используйте HTTP Client (я работал с 4.3.4 .. не уверен в более ранних версиях) с экземпляром NTCredentials. Это тоже сделало магию для меня .. Пример, как показано ниже:
final NTCredentials ntCredentials = new NTCredentials("username", "Passworrd","destination", "domain");
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(AuthScope.ANY, ntCredentials);
CloseableHttpClient httpclient = HttpClientBuilder.create()
.setDefaultCredentialsProvider(credsProvider)
.build();