SOAP消息的簽名驗籤Handler

 TODO:SOAP消息的簽名驗籤 

現在需要解決的問題:

1、【2007-01-22】在Axis中,如果SOAP消息攜帶附件的時候,由SOAP報文轉換成xml document時,解析報錯,導致無法正確簽名,SAX解析報錯org.xml.sax.SAXParseException: :Content is not allowed in prolog。這裏對SOAP報文的簽名就是按照對XML文件簽名處理,Web服務可以正確調用

解決:尚未解決

2、【2007-01-22】在服務器端,在一個web服務中,對於上傳上來的XML文件,可以通過DOM解析,修改了Document之後,想通過Transformer將dom對象保存到XML文件中去,在通過 TransformerFactory得到Transformer實例語句處,Web服務直接終止。如果將保存上面的語句註釋後,程序正常返回。不能使用TransformerFactory,不知道原因在哪?可不想自己將document內容寫到文件中去。在第一行語句處Web服務就直接終止TransformerFactory tf = TransformerFactory.newInstance();
  Transformer t = tf.newTransformer();
//  doc.normalize();
  DOMSource ds = new DOMSource(doc);
  StreamResult sr = new StreamResult(new FileOutputStream(filePath));
  t.transform(ds, sr);,上面放在了一個try-catch中,但程序沒有任何異常拋出,axis報出java.lang.reflect.InvocationTargetException,如果這個功能通過一個應用程序執行,沒有任何問題,XML文件可以正常讀入寫入,通過Web服務的形式發佈後,從客戶端傳過來的XML文件可以正常解析,並可以從DataHandler以流的形式寫入到文件中

解決:解決。在使用TransformerFactory之前加上System.setProperty("javax.xml.transform.TransformerFactory", "com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl");
一行代碼就可以了。還有一種做法是配置一個jaxp.properties放在java_home/jre/lib/下,或者換成jdk1.4沒有這個問題。 還有一點需要注意的就是在更新XML文件時,注意增加兩個相同的Element

理論介紹

數據簽名

文件摘要(MD5,SHA1)

文件簽名

驗證簽名

簽名Handler的實現

驗籤Handler的實現

Handler的部署

發佈了28 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章