サード パーティの Web サービス (SOAP ベース) を呼び出すには、Web サービス クライアントを作成する必要があります。サード パーティは、wsdl および関連する xsd ファイルを公開しました。
サードパーティは、.p12 証明書を使用して Web サイトとサービスを保護します
スタブの生成には wsdl2java を使用しました。エンドポイントを変更し、サービスを呼び出しました。次のエラーを受け取りました。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header></SOAP-ENV:Header>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">wsse:InvalidSecurity</faultcode>
<faultstring>SECU1075: An error was discovered processing the <wsse:Security> header</faultstring>
<detail>SECU3510: Signature requirements validation failed: Element (/soapenv:Envelope/soapenv:Body) was not signed</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
んーよしっ。私が文書に署名しなければならないことは理にかなっています。
(私にとって)奇妙な点は、WSDL ファイルのどこにもセキュリティ定義がないことです。これは正常ですか?サードパーティに連絡したところ、SOAP メッセージがどのように表示される必要があるかについての PDF が送られてきました。次のタグがヘッダーに表示されます:
<wsse:BinarySecurityToken>
と
<dsig:SignedInfo>
私が集めたものから、それには私の証明書といくつかのデジタル署名が必要です。
誰かがJavaでこれらを生成する方法を推奨できますか? 私は Axis2/Rampart パスをたどり始めましたが、正直なところ、それらは WSDL ファイルで定義されたセキュリティ要件を持つことを前提としているようです (間違っていたら訂正してください)。