我们在weblogic上部署了webservice,实现了oasis wsse。然后我使用jboss中的wsconsume创建了客户端(后来尝试了metro)并调用了Web服务。它总是抛出一个错误,我试图在soapUI中创建一个成功发送的测试客户端,发现jboss生成的请求不匹配。
我发现有2个不同之处: 1.)DateToken: 工作:
< WSU:创建> 2011-09-06T08:22:14.515Z< / WSU:创建>
不工作:
<的wsse:创建> 2011-09-07T06:12:37.322Z< /的wsse:创建>
2。)密码类型: 工作:
< wsse:Password Type =“http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest”> OB7izBPcPE0sfJaAEdD1uIrlFT4 =&lt ; /的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-client 3.0.1-native-2.0.4.GA。
知道如何解决这个问题吗?似乎jbossws正在生成错误的wsse标签,对于datetoken应该是wsu并输入密码: - ?
答案 0 :(得分:1)
根据UsernameToken个人资料specification,它应该是,
<wsu:Created>
哪里
wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-
1.0.xsd"
另外,根据规格类型应该是,
Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"
两个
<wsse:Created>2011-09-07T06:12:37.322Z</wsse:Created>
和
<wsse:Password Type='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#PasswordDigest'>trvFhf0ZCHQy4cBtNu984fs/nIg=</wsse:Password>
是,不符合规范......