3

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 を署名するにはどうすればよいですか?

4

2 に答える 2

3

この JavaRanch スレッドでは、Axis ハンドラーを使用して WSS4J でセキュリティと暗号化を実装する方法について説明しています。

いくつかのことをしなければならないようです:

  1. wsdd の構成/書き込み
  2. wsdd ファイルを指す EngineConfiguration で Web サービスを呼び出します
  3. パスワード コールバック クラスを作成する
  4. crypto.properties ファイルを作成する
  5. crypto.properties ファイルと、証明書を含むキー ストアがアプリのクラス パス上にあることを確認します。

このすべてを理解するために、JavaRanch フォーラムの John Farrel に感謝します。

全体として、お尻の痛みのすべての種類。基になる SOAP メッセージ自体を Axis プロキシ クラスから取得する方法があれば、そのほうが手っ取り早い方法かもしれませんが、私は Axis 1 の経験があまりありません。

ところで、/r/java からこんにちは!

于 2012-05-09T17:21:09.880 に答える
0

これを見つけました:

Axisフレームワーク内でデジタル署名を使用してSOAP要求に署名するための簡単で簡単な方法を説明する、誰かが私に勧めたり、どこかを指摘したりできますか?

「WSS4Jプロジェクトをご覧ください。WSSecurityで説明されているように、署名と暗号化のためのAxisハンドラーを提供します。」

http://mail-archives.apache.org/mod_mbox/axis-java-user/200403.mbox/%3CCGEOIPKACAGJDDPKCDIHEEKACCAA.abhinavm@contata.co.in%3E- _

それは役に立ちますか?

于 2012-05-08T19:04:19.307 に答える