Web services JAX-WS客户端|使用安全标头发送客户端请求
为了安全起见,我使用XWSS实现了一个SpringWS。我已将安全配置策略文件添加到我的应用程序中Web services JAX-WS客户端|使用安全标头发送客户端请求,web-services,spring-security,spring-ws,Web Services,Spring Security,Spring Ws,为了安全起见,我使用XWSS实现了一个SpringWS。我已将安全配置策略文件添加到我的应用程序中 <xwss:SecurityConfiguration xmlns:xwss="http://java.sun.com/xml/ns/xwss/config" dumpMessages="true"> <xwss:RequireTimestamp id="tsp" maxClockSkew="60" t
<xwss:SecurityConfiguration xmlns:xwss="http://java.sun.com/xml/ns/xwss/config"
dumpMessages="true">
<xwss:RequireTimestamp
id="tsp"
maxClockSkew="60"
timestampFreshnessLimit="300">
</xwss:RequireTimestamp>
<xwss:RequireUsernameToken
id="token"
passwordDigestRequired="false"
nonceRequired="false"/>
<xwss:Timestamp></xwss:Timestamp>
<xwss:UsernameToken
name="service"
password="service"
id="uToken"
digestPassword="true"
useNonce="true"/>
</xwss:SecurityConfiguration>
现在我正在开发一个客户端来访问WS。保安工作正常。但是我无法测试客户机可以成功从我的服务中获得响应的成功案例。问题是我不知道如何让我的客户机在请求的同时发送usernametoken和时间戳。我正在使用NetBeans IDE,并且正在实现一个JAX-WS客户机,以使用访问Spring WS
请告诉我需要做什么。对于Spring WSS,向传入的soap消息或传出的soap消息添加安全头之间没有太大区别。过程非常相似
在这两种情况下,您都应该创建一个拦截器来添加安全标头。对其进行了描述。因此,如果您使用Spring创建WS-client,您应该不会有问题,特别是如果您已经开发了服务器端,但是您参考的教程看起来不像是使用Spring来实现客户端。您可以通过在扩展WebServiceGatewaySupport的客户机类中添加以下代码来实现这一点
SoapHeader header = msg.getSoapHeader();
StringSource headerSource = new StringSource("<wsse:Security xmlns:wsse=\"http://docs.oasis-
open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\" mustUnderstand=\"1\"> <wsse:UsernameToken>
<wsse:Username>"+userName+"</wsse:Username> <wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/
oasis-200401-wss-username-token-profile-1.0#PasswordText\">"+password+"</wsse:Password> </wsse:UsernameToken>"
+"</wsse:Security>");
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(headerSource, header.getResult());
SoapHeader=msg.getSoapHeader();
StringSource headerSource=新的StringSource(“
“+用户名+”“+密码+”“”
+"");
Transformer Transformer=TransformerFactory.newInstance().newTransformer();
transform(headerSource,header.getResult());
上述内容必须包含在webserviceTemplate的MarshallSendAndRecieve方法的消息回调处理程序中此外,您还可以使用SoapUI测试您的Web服务。