2010-12-07 21 views
5

サードパーティのWebサービス(SOAPベース)を呼び出すためのWebサービスクライアントを作成する必要があります。サードパーティはwsdlと関連するxsdファイルを公開しました。Javaで保護されたWebサービスを呼び出す

第三者が、私は私のスタブを生成するためにはWSDL2Javaを使用する証明書

を.P12使用して自分のウェブサイトやサービスを確保します。私はエンドポイントを修正してサービスを呼び出しました。次のエラーが発生しました:

<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 &lt;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> 

Hmmm、ok。私はその文書に署名するべきであるという意味合いを持っています。

(私にとって)奇妙な部分は、WSDLファイルのどこにでもセキュリティ定義がありません。これは正常ですか?私は第三者と連絡を取り、彼らは私に、SOAPメッセージがどのように見えるべきかのpdfを送った。以下のタグがヘッダーに表示されます。 は含む:

<wsse:BinarySecurityToken> 

<dsig:SignedInfo> 

をので、私が集まる何から、それは私の証明書といくつかのデジタル署名が必要です。

Javaでこれらを生成する方法をお勧めしますか?私はAxis2/Rampartパスを開始しましたが、正直なところ、WSDLファイルにセキュリティ要件が定義されていることを前提としています(私が間違っている場合は修正してください)。

答えて

4

WS-Security標準を使用してメッセージに署名する必要があるようです。 WSセキュリティ標準では、wsdlファイルへのセキュリティマッピングは指定されていません。一部のアプリケーションでは、WS-SecurityポリシーとWS-Policy AttachementをWs-securityと組み合わせて使用​​します。 WS-Policy Attachmentは、ポリシーをWSDLにマップする方法を指定します。

あなたは

をW3.orgのからこれらの標準についての詳細を学ぶことができそして、そうあなたは正しい道にあり、WSS4Jまたは軸がお好み城壁使用することができます。

+0

私は実際にあなたのコメントを読んだ後、ランプパートといくつかの進歩を遂げました。セキュリティの定義がサービス自体に必要ではないと実際に伝えたい人が必要だったと思います。奇妙に聞こえるかもしれません。 –

関連する問題