SOAP Webservice作为后端托管并使用IBM Datapower Http相互处理进行身份验证,我使用wsmpl文件和相关模式使用wsimport生成 java客户端存根代码,也有.pfx私钥。
从Mozilla Firfox,如果我在请求中附加证书,我可以访问Datapower,但没有得到响应,这是正常的。 从SOAPUI,我能够在使用证书时获得响应,并使用自定义SOAP标头附加Soap请求。
只需使用jax-ws Http连接,当我将SOAP请求作为xml文件附加时,我就可以将响应作为流返回。
我正在尝试使用Apache CXF附加.pfx文件,我还使用system.properties来设置javax.net.ssl.keyStore属性。
我想知道有没有办法将证书(.pfx)从java附加到CXF客户端。另外,如何在Soap标头中操作自定义标头元素。
javax.xml.ws.WebServiceException:org.apache.cxf.service.factory.ServiceConstructionException:无法创建服务。
PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径
使用
Map<String, Object> outProps = new HashMap<String, Object>();
outProps.put(WSHandlerConstants.ACTION,
WSHandlerConstants.TIMESTAMP + " " +
WSHandlerConstants.SIGNATURE + " " +
WSHandlerConstants.ENCRYPT);
outProps.put(WSHandlerConstants.ACTION, "Signature");
outProps.put(WSHandlerConstants.USER, "myAlias");
WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
cxfEndpoint.getOutInterceptors().add(wssOut);