2017-02-20 44 views
0

Я попытался отправить вызов HttpRest с использованием NTLM Autentication в Java. Я попытался использовать org.apache.http - Lib. не было большой проблемой использовать HttpClient для отправки почтового запроса с анонимной аутентификацией. Но у меня есть проблемы с WindowsAuthentication. Я даже пытался использовать CredentialProvider с моими собственными учетными данными Windows (как компромисс, мне тоже не нравится), но мне это не удалось. Есть ли простой способ использования аутентификации NTLM, отправляющей почтовые запросы из Java-кода? Есть ли другой lib, который лучше подходит для моих нужд?Http post требует проверки подлинности NTLM (java)

Thx - Markus

ответ

2

Я до сих пор понятия не имею, почему доку от https://hc.apache.org/httpcomponents-client-ga/tutorial/html/authentication.html о NTLM аутентификацией не работали для меня. я, наконец, решить мою проблему, делая его похожим на документацию для базовой аутентификации, как описано на http://www.baeldung.com/httpclient-post-http-request

теперь выглядит следующим образом:

... 
CredentialsProvider credsProvider = new BasicCredentialsProvider(); 
     credsProvider.setCredentials(AuthScope.ANY, 
       new NTCredentials("username", "passwd", hostname, "domain.at")); 


HttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(credsProvider).build(); 

HttpPost post = new HttpPost("http://www.example.com")); 

StringEntity input = new StringEntity(bodyAsString, HTTP.UTF_8); 
input.setContentType("application/json"); 
input.setContentEncoding("UTF-8"); 
post.setEntity(input); 

post.setHeader("Accept", "application/json"); 
post.setHeader("Content-type", "application/json"); 


HttpResponse response = client.execute(post); 
...