TL;DR については以下を参照してください。
node-soap で WSDL を消費する際に問題が発生しました。私は他の WSDL (オンラインで見つかった例) を試してみましたが、問題なく動作しましたが、この特定の WSDL では無数の問題に遭遇しました。node-soap モジュールを使用する soap-as-promised を使用しています。それは無関係であるべきです。
var soap = require('soap-as-promised');
var url = 'https://test.ipg-online.com/ipgapi/services/order.wsdl';
var apiCall = exports.apiCall = function () {
console.error("test");
soap.createClient(url, { wsdl_options: { cert: '/path/to/cert.pem', key:'/path/to/key.key' } } )
.then(function(client) {
console.error(client);
client.describe();
})
.catch(function(error) {
console.error(error);
});
}
これは私が現在使用しているコードですが、これは間違いなく正しくありません。次のエラーが返されます (証明書と秘密鍵へのパスは正しいです)。
[エラー: エラー:0906D06C:PEM ルーチン:PEM_read_bio:開始行がありません]
ドキュメントに基づいて、SSL通信にclient.setSecurityを使用することになっているようです:
client.setSecurity(new soap.ClientSSLSecurity(
'/path/to/key'
, '/path/to/cert'
, {/*default request options*/}
));
ただし、これを実行して wsdl_options を無視すると、クライアントはコールバックで未定義として返され、setSecurity 関数を含む関数を実行できなくなります。両方の組み合わせである必要があると思いますが、どの組み合わせかはわかりません。
TL;DR node-soap で WSDL を消費しようとしています。この WSDL には、証明書と秘密鍵、およびユーザー名/パスワードによる認証が必要です。ノードソープでこれを行うプロセスは何ですか? 証明書をインストールして (私は CentOS を使用しています)、何らかの形でそれらを参照する必要がありますか?
どんな助けでも大歓迎です-プロセスに精通している場合は、別のライブラリであっても、参加してください! ありがとう :)
編集:修正!同様の問題を抱えている他の人にとって、コードは次のとおりです。
soap.createClient(url, { wsdl_options: { cert: fs.readFileSync('/path/to/cert.pem'), key: fs.readFileSync('/path/to/key.key'), passphrase: 'password' } } )