我們在實現oasis wsse的weblogic上部署了webservice。然後我使用jboss中的wsconsume創建客戶端(稍後嘗試使用metro)並調用Web服務。它總是拋出一個錯誤,我試圖在soapUI中創建一個測試客戶端,發送成功,並發現由jboss產生的請求不匹配。調用weblogic部署的OASIS WSSE Web服務
有2差我發現: 1)DateToken: 工作:
< WSU:創建> 2011-09-06T08:22:14.515Z </WSU:創建>
不工作:
<的wsse:創建> 2011-09-07T06:12:37.322Z </WSS E:創建>
2.)密碼類型: 工作:
<的wsse:密碼類型=「http://docs.oasis-open.org/wss/2004/01/綠洲-200401-WSS-用戶名令牌輪廓-1.0#PasswordDigest「> OB7izBPcPE0sfJaAEdD1uIrlFT4 = < /的wsse:密碼>
不工作:
< wsse:Password Type ='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#PasswordDigest'> trvFhf0ZCHQy4cBtNu984fs/nIg = </wsse :密碼>
這是我如何調用從客戶端的Web服務:
URL clientSideSecurityfile = new File("jboss-wsse-client.xml").toURI().toURL();
BindingProvider bp = (BindingProvider) port;
((StubExt) port).setSecurityConfig(clientSideSecurityfile.toExternalForm());
((StubExt) port).setConfigName("Standard WSSecurity Client");
bp.getRequestContext().put(StubExt.PROPERTY_AUTH_TYPE, StubExt.PROPERTY_AUTH_TYPE_BASIC);
bp.getRequestContext().put(StubExt.PROPERTY_CLIENT_TIMEOUT, 30000);
bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "usernmae");
bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "password");
responseACK = port.callWebService();
我使用jboss4.2.3,將JBossWS客戶端3.0.1-native-2.0.4.GA。
任何想法如何解決這個問題?看來jbossws正在生成錯誤的wsse標籤,它應該用於datetoken的wsu並輸入密碼: - ?.
嗨感謝您的快速回復,但顯然jbossws本地生成這兩個錯誤的標籤,正如我所說的。任何在這方面的工作?也許使用其他堆棧: - ? – czetsuya
您可以使用Apache Axis2生成您的客戶端。它帶有名爲wsdl2java的工具,用於從給定的wsdl生成客戶端存根... –