在Tomcat中使用NTLM/Kerberos从Java Web应用程序调用.NET Web服务

3
我有一个Java webapp,其中包含一个HttpClient连接到远程的.NET SOAP web服务。目前为止一切顺利。Java webapp在Windows Server上运行于Apache Tomcat内,使用一个服务账户。
不幸的是,那个远程的.net web服务使用NTLM。这个答案给了我一些关于如何做的见解。但似乎配置仍需要用户名/密码而不是利用Tomcat正在运行的服务账户。此外,我不确定Java验证器应该长什么样子(在这里看到)。
是否有人尝试过这个?

更新

一些有趣的链接:


1
你是在尝试访问Java Web应用程序中的Tomcat服务帐户吗(我认为这是不可能的)?还是你在尝试弄清楚如何向.NET Web服务发送NTLM凭据? - s7vr
我想在Windows服务器上的Tomcat内部从Java Web应用程序中调用一个.NET WS。.NET WS需要NTLM身份验证,我想利用Tomcat正在运行的服务帐户。 - David Brossard
1
请查看以下Waffle的说明:https://dev59.com/plDTa4cB1Zd3GeqPGBFW - Devon_C_Miller
1
不要利用Tomcat服务账户。该账户旨在运行Tomcat而非进行WS调用。如果此账户被攻击,这意味着您不仅可以访问Tomcat服务器,还可以访问调用Web服务并可能窃取其他信息。简而言之,这会削弱您的安全模型。 - Namphibian
那么有什么替代方案呢? - David Brossard
1个回答

0
似乎在Java 7/8和Tomcat 8.x上,以下内容就足以透明地利用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();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接