我有一个 Java webapp,它包含一个到远程 .NET SOAP web 服务的 HttpClient。到目前为止,一切都很好。 Java webapp 在 Windows Server 上的 Apache Tomcat 中运行并使用服务帐户。
不幸的是,该远程 .net Web 服务使用 NTLM。这answer让我对如何去做有一些了解。但似乎配置仍然需要用户名/密码,而不是利用运行 Tomcat 的服务帐户。此外,我不确定 Java 身份 validator 应该是什么样子(如 here 所示)。
有人试过吗?
更新
一些有趣的链接:
- 不同 authentication schemes Apache HTTP 组件支持
- NTLMv2 authentication 的样本- 我还没有测试它。
最佳答案
似乎在带有 Tomcat 8.x 的 Java 7/8 上,以下内容足以“透明地”利用 NTLM 身份验证。
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.client.methods.HttpUriRequest;
紧随其后
boolean useWindowsAuthentication = true;
HttpUriRequest request;
CloseableHttpClient httpclient;
if (useWindowsAuthentication){
log.info("Using Windows Authentication");
httpclient = WinHttpClients.createDefault();
} else {
httpclient = HttpClients.createDefault();
}
关于java - 使用 NTLM/Kerberos 从 Tomcat 中的 Java Web 应用程序中调用 .NET Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46584502/