Http post请求unsing NTLM身份验证(java)

时间:2017-02-20 16:47:56

标签: rest http http-post windows-authentication ntlm

我尝试使用Java中的NTLM Autentication发送HttpRest调用。我尝试使用org.apache.http - Lib。使用HttpClient发送带有匿名身份验证的发布请求不是一个大问题。 但我在使用WindowsAuthentication时遇到了一些麻烦。我甚至尝试使用CredentialProvider和我自己的Windows凭据(作为妥协,我不喜欢它)但我没有成功。 有没有一种简单的方法使用NTLM身份验证从Java代码发送post请求? 还有另一个符合我需求的lib吗?

Thx - markus

1 个答案:

答案 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);
...