Web サービスの WSDL が提供されました。私は今、その要求にデジタル署名する必要があります。以前の開発者は、Eclipse 機能を利用してプロキシ クラスを生成していました。WSDL をプロジェクトに追加し、右クリックして [Web サービス]、[クライアントの生成] の順にクリックします。
リクエストにデジタル署名する必要があるまで、これはうまくいきました。掘り下げてみたところ、Axis 1.4 ではリクエストに署名できないようです。WSS4J を使用してそれを行うことができます。私はWSS4j 1.5を自分のプロジェクトに取り入れました。
リクエストにデジタル署名する方法がわかりません。プロキシ クラスを使用する既存のコードは次のとおりです。
XiSecureWSServiceLocator service = new XiSecureWSServiceLocator();
service.setXiSecureWSServicePortEndpointAddress(paymetricPortAddress);
XiSecureWSPortType proxy = service.getXiSecureWSServicePort();
((Stub) proxy).setTimeout(paymetricTimeOutinMillisec);
SDecrypt_InputType sdi = new SDecrypt_InputType();
sdi.setStrToken(ccNumber);
sdi.setStrUserID(user);
SDecrypt_OutputType sdo = null;
sdo = proxy.pm_SingleDecrypt(sdi);
私がやりたいことは、この記事に似たものです。彼らが使用した関数は次のとおりです。
public Message signSOAPEnvelope(SOAPEnvelope
unsignedEnvelope) throws Exception
{
WSSignEnvelope signer = new WSSignEnvelope();
String alias = "16c73ab6-b892-458f-abf5-2f875f74882e";
String password = "security";
signer.setUserInfo(alias, password);
Document doc = unsignedEnvelope.getAsDocument();
Document signedDoc = signer.build(doc, crypto);
// Convert the signed document into a SOAP message.
Message signedSOAPMsg =
(org.apache.axis.Message)AxisUtil.toSOAPMessage(signedDoc);
return signedSOAPMsg;
}
Soap Envelope を作成するためのすべてのコードが生成されたプロキシ クラスに隠されている場合、Soap Envelope を署名するにはどうすればよいですか?