从node.js SOAP客户端调用SOAP Web服务的NTLM身份验证?

从node.js SOAP客户端调用SOAP Web服务的NTLM身份验证?,node.js,soap,wsdl,soap-client,ntlm,Node.js,Soap,Wsdl,Soap Client,Ntlm,我有一个运行express.js framework的node.js应用程序,它试图使用需要身份验证的SOAP Web服务 如果我在浏览器中输入这个特定WSDL的URL,就会弹出一个登录对话框。输入用户凭据后,我将进入WSDL。但是如何从node.js“登录” 这是我同事给我的一段xml代码片段。显然,它有助于身份验证。但我不知道该怎么处理它 <binding name="NotificationManager" > <security mode="TransportC

我有一个运行express.js framework的node.js应用程序,它试图使用需要身份验证的SOAP Web服务

如果我在浏览器中输入这个特定WSDL的URL,就会弹出一个登录对话框。输入用户凭据后,我将进入WSDL。但是如何从node.js“登录”

这是我同事给我的一段xml代码片段。显然,它有助于身份验证。但我不知道该怎么处理它

<binding name="NotificationManager" >
    <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Ntlm" proxyCredentialType="None" realm=""/>
             <message clientCredentialType="UserName" algorithmSuite="Default"/>
    </security>
</binding>
方法1的问题 我会得到一个错误。错误页面是一个html文档,说明应用程序中的服务器错误。服务器版本Iternet信息服务7.5。由于身份验证标头无效,您无权查看此页

如果我将错误日志记录放在“client.setSecurity()”方法之后,程序将崩溃,错误为undefined的无法.setSecurity()

方法2:

var soap = require('soap');

soap.createClient(soapURL, function(err, client) {
    console.log('client created');
    if (err)
      {
          console.log('ERR: -> ');
          console.log(err);
          return false;
      }
    client.setSecurity(new soap.BasicAuthSecurity(username,password));
    console.log('successfully authenticated');
    });
});
我看到xml提到了ntlm,所以我想试试

var soap = require('soap');
var httpntlm = require('httpntlm');
var fs = require('fs');

httpntlm.get({
  url: soapURL,
  password: password,
  username: username
}, function(err, wsdl) {

    console.log('successfully authenticated');
    fs.writeFile('wsdl_cache/WDCETA.wsdl', wsdl.body, function() {
        soap.createClient(__dirname + '/wsdl_cache/WDCETA.wsdl', function(err, client) {
            if (err) {
                console.log('SOAP ERR: ->');
                console.log(err);
                return;
            }

        client.setSecurity(new soap.NtlmSecurity(username, password));

        console.log(client);
    });

  })

});
方法2的问题

对于这种方法,我将成功地验证WSDL并将其下载到文件系统中。但是,关于“您无权查看此页面…”我会遇到相同的错误,但这次是针对我缓存的导入的其中一个文件


在这种情况下,与这种类型的SOAP Web服务交互的正确方式是什么

我遇到了同样的问题,我遵循了你的方法2,但仍然无法让它发挥作用(我使用的是你的方法1)。我想知道你是否找到了解决办法。谢谢:-)@GeorgeHuang我还没有找到解决办法。由于这个问题和其他一些问题,我最终用visual studio将应用程序的后端切换到asp.net,visual studio内置了对这类事情的支持。