1

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' } } )
4

0 に答える 0