我尝试使用Java中的NTLM Autentication发送HttpRest调用。我尝试使用org.apache.http - Lib。使用HttpClient发送带有匿名身份验证的发布请求不是一个大问题。 但我在使用WindowsAuthentication时遇到了一些麻烦。我甚至尝试使用CredentialProvider和我自己的Windows凭据(作为妥协,我不喜欢它)但我没有成功。 有没有一种简单的方法使用NTLM身份验证从Java代码发送post请求? 还有另一个符合我需求的lib吗?
Thx - markus
答案 0 :(得分:4)
我仍然不知道为什么来自https://hc.apache.org/httpcomponents-client-ga/tutorial/html/authentication.html的关于NTLM身份验证的doku对我没有用。 我终于解决了我的问题,类似于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);
...