从node.js SOAP客户端调用SOAP Web服务的NTLM身份验证?
我有一个运行express.js framework的node.js应用程序,它试图使用需要身份验证的SOAP Web服务 如果我在浏览器中输入这个特定WSDL的URL,就会弹出一个登录对话框。输入用户凭据后,我将进入WSDL。但是如何从node.js“登录” 这是我同事给我的一段xml代码片段。显然,它有助于身份验证。但我不知道该怎么处理它从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
<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内置了对这类事情的支持。