我们在weblogic上部署了webservice,它实现了oasis。然后,我使用来自jboss的web创建了客户机(后来尝试了metro),并调用了web服务。它总是抛出一个错误,我试图在soapUI中创建一个成功发送的测试客户端,并发现jboss产生的请求不匹配。
我发现有两个不同之处:1。DateToken:工作:
2011-09-06T08:22:14.515Z
不起作用:
2011-09-07T06:12:37.322Z
2.)密码类型:工作:
OB7izBPcPE0sfJaAEdD1uIrlFT4=">http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">OB7izBPcPE0sfJaAEdD1uIrlFT4=
不起作用:
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#PasswordDigest'>trvFhf0ZCHQy4cBtNu984fs/nIg=
我是这样从客户端调用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-本机-2.0.4.GA。
知道怎么解决这个问题吗?似乎jbossws产生了错误的wsse标记,应该是wsse标记的日期标记,输入密码:-?
发布于 2011-09-08 12:08:46
根据UsernameToken profile 规格说明应该是,
<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>不符合规范..。
https://stackoverflow.com/questions/7342605
复制相似问题