Как включить элемент SignatureConfirmation на сервере Apache CXF SOAP - PullRequest
0 голосов
/ 12 февраля 2011

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

Ответы [ 2 ]

1 голос
/ 12 февраля 2011

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

signingProps.put(WSHandlerConstants.ACTION, "enableSignatureConfirmation");
0 голосов
/ 20 сентября 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...