2

BankId と統合しようとしています (これはスウェーデンで一般的な認証および署名サービスです)。私は Savon Ruby SOAP クライアントを使用しており、ガイドラインに従って BankId のテスト API にリクエストを送信しようとしています。「認証」操作を呼び出すと、次のエラーが発生します。

The given SOAPAction Authenticate does not match an operation

SOAP リクエストは次のようになります。

SOAP request: https://appapi.test.bankid.com/rp/v4
SOAPAction: "Authenticate", Content-Type: text/xml;charset=UTF-8, Content-Length: 384
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rp="http://bankid.com/RpService/v4.0.0/types/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <rp:AuthenticateRequest>
       <personalNumber>12345678</personalNumber>
     </rp:AuthenticateRequest>
  </env:Body>
</env:Envelope>

次の詳細を使用してセッションを作成しています。

コードは次のとおりです。

> client = Savon.client(wsdl: 'https://appapi.test.bankid.com/rp/v4?wsdl', namespace: 'http://bankid.com/RpService/v4.0.0/types/', endpoint: 'https://appapi.test.bankid.com/rp/v4', ssl_cert_file: "XXXX/cert.pem", ssl_cert_key_file: "XXX/key.pem", ssl_cert_key_password: "qwerty123", pretty_print_xml: true, log_level: :debug, log: true)

> client.call(:authenticate, message: {personalNumber: '12345678'})

私は SOAP API の使用にあまり慣れていないことを言及しておく必要があります。

4

1 に答える 1

2

soap_action ヘッダーは不要であると明示的に言う必要がありました。

> client = Savon.client(wsdl: 'https://appapi.test.bankid.com/rp/v4?wsdl', namespace: 'http://bankid.com/RpService/v4.0.0/types/', endpoint: 'https://appapi.test.bankid.com/rp/v4', ssl_cert_file: "XXXX/cert.pem", ssl_cert_key_file: "XXX/key.pem", ssl_cert_key_password: "qwerty123", pretty_print_xml: true, log_level: :debug, log: true)

> client.call(:authenticate, message: {personalNumber: '12345678'}, soap_action: '')
于 2016-02-16T14:47:47.500 に答える