Как включить элемент SignatureConfirmation на сервере Apache CXF SOAP

У меня есть мыльный клиент, а также мыльный сервер, использующий CXF. У меня правильно работает подпись сообщений. Когда я указываю своему мыльному клиенту другой сервер SOAP с помощью устройства IBM SOAP, ответные сообщения содержат элемент SignatureConfirmation. Я хочу убедиться, что мой SOAP-сервер на основе CXF дает те же результаты, что и сторонние 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); 

person Jeremy    schedule 11.02.2011    source источник


Ответы (2)


Действие должно быть «enableSignatureConfirmation», которое позаботится о добавлении элемента подтверждения подписи в ответ.

signingProps.put(WSHandlerConstants.ACTION, "enableSignatureConfirmation");
person Biju Kunjummen    schedule 12.02.2011

Я нашел правильный ответ.

В карте свойств, переданной WSS4JOutInterceptor и WSS4JInInterceptor, добавьте ENABLE_SIGNATURE_CONFIRMATION, т.е.

signingProps.put(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION, "true" );

Это должно быть установлено как на клиенте, так и на сервере, иначе оно не будет работать. Также, если вы включите подтверждение подписи на клиенте, но не на сервере, то клиент выдаст исключение.

person Jeremy    schedule 19.09.2011