gpt4 book ai didi

node.js - node-soap - 如何为每个请求传递证书和基本授权 header ?

转载 作者:太空宇宙 更新时间:2023-11-03 13:34:19 34 4
gpt4 key购买 nike

我正在使用 node-soap用于 SOAP 服务的 lib 并首次使用它。我有要求我需要通过每个强制性请求的证书和基本授权 header 。

我已经实现了我的代码如下:

var options = {
wsdl_options: {
key: fs.readFileSync(path.resolve("./xxx.key")),
cert: fs.readFileSync(path.resolve("./xxx.crt")),
ca: fs.readFileSync(path.resolve("./xxx.pem")),
},
wsdl_headers : {
Authorization : 'Basic ' + new Buffer(username +':'+ password ).toString('base64')
},
"overrideRootElement": {
"namespace": "con",
},
envelopeKey : 'soapenv'
};



soap.createClient(url, options, function(err, client) {
if(err){
console.log("Error ::: >",err);
res.json({message : err});
}


if(client){
console.log(JSON.stringify(client.describe()));
var data = actualRequestObject

client.setSecurity(new soap.ClientSSLSecurity(
fs.readFileSync(path.resolve("./XXX.key")),
fs.readFileSync(path.resolve("./XXX.crt")),
fs.readFileSync(path.resolve("./XXX.pem"))
));

client.setSecurity(new soap.BasicAuthSecurity(username, password));
client.IndicativeEnrichment(data, function(err, result){
console.log("lastRequest :::: >>>>> ",client.lastRequest);
if(err){
console.log("ERROR Enrichment :::: >>> ", err);
}

if(result){
console.log("RESULT ::: >>>>", result);
}
})
}
});

当我尝试使用 setSecurity() 方法设置基本身份验证和证书时。它覆盖了我使用 setSecurity() 设置的第一件事。如果我没有通过其中任何一项,我将收到未经授权的错误。

请帮助我提供解决方案。

最佳答案

获取客户端证书和基本身份验证的好方法是 implement your own node-soap security protocol .您可以从 existing node-soap security protocols 中获得灵感并将它们组合起来,或者编写一个足够通用的协议(protocol)来链接两个(或更多)现有的安全协议(protocol)。当然,创建一个带有解决方案的拉取请求会更好,因此可以考虑将其直接包含在 node-soap 中。

个人最终通过 configured https.Agent(...) 传递了额外的选项BasicAuthSecurity构造函数/class .

var https = require('https');

var options = {
// https://nodejs.org/api/https.html#https_class_https_agent
agent: new https.Agent({
key: someKeyBuffer,
cert: someCertBuffer,
ca: [
someCACertBuffer,
]
});
}

client.setSecurity(new soap.BasicAuthSecurity('username', 'password', options));

这种方式也可以用来结合基本认证和.pfx or .p12 ClientSSLSecurityPFX 中使用的文件

关于node.js - node-soap - 如何为每个请求传递证书和基本授权 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44965044/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com