我有一个肥皂客户端和一个使用 CXF 的肥皂服务器。我的消息签名工作正常。当我使用 IBM SOAP 设备将我的 SOAP 客户端指向不同的 SOAP 服务器时,回复消息包含元素 SignatureConfirmation。我想确保我的基于 CXF 的 SOAP 服务器提供与第三方 SOAP 服务器相同的结果,那么如何配置我的服务器以启用该元素?
这是我设置服务器的方式:
signingProps.put(WSHandlerConstants.ACTION, "Timestamp Signature");
signingProps.put(WSHandlerConstants.SIGNATURE_PARTS, "{}{http://schemas.xmlsoap.org/soap/envelope/}Body ;"
+ "{}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}"
+ "Timestamp");
signingProps.put(WSHandlerConstants.SIG_KEY_ID, "IssuerSerial");
Properties keyStoreProps = new Properties();
keyStoreProps.put(LocalCryptoProvider.WS_CRYPTO_PROVIDER,
LocalCryptoProvider.class.getName());
keyStoreProps.put(LocalCryptoProvider.KEYSTORE_OBJECT, keyStore);
WSS4JOutInterceptor outSigner = new WSS4JOutInterceptor(signingProps);
cxfFactory.getOutInterceptors().add(new SAAJOutInterceptor());
cxfFactory.getOutInterceptors().add(outSigner);