Вот блог с подробностями об использовании Apache CXF: Добавление заголовков безопасности X.509 к вызовам Apache CXF SOAP (метод WS-SecurityPolicy)
Существует также учебник с исходным кодом, настроенным для использования метода WS-SecurityPolicy.
РЕДАКТИРОВАТЬ: исправлена неработающая ссылка, добавлена ссылка на учебник.
Теперь на сайте CXF есть хороший обзор различных настроек WS-SecurityPolicy, и он ссылается на ссылку выше.
В двух словах (на случай, если ссылки будут снова удалены), WS-SecurityPolicy настроен аналогично методу перехватчика CXF , описанному в вики CXF, за исключением нескольких изменений в файле cxf.xml и cxf-servlet.xml:
cxf.xml
<jaxws:client name="{http://myport" createdFromAPI="true">
<!-- You will need to add the corresponding values to a properties file -->
<jaxws:properties>
<entry key="ws-security.callback-handler" value="client.ClientKeystorePasswordCallback"/>
<entry key="ws-security.encryption.properties" value=keystore.properties"/>
<entry key="ws-security.signature.properties" value="keystore.properties"/>
<entry key="ws-security.encryption.username" value="myservicekey"/>
</jaxws:properties>
CXF-servlet.xml
<jaxws:properties>
<entry key="ws-security.callback-handler">
<ref bean="myPasswordCallback"/>
</entry>
<entry key="ws-security.encryption.properties" value="serviceKeystore.properties"/>
<entry key="ws-security.signature.properties" value="serviceKeystore.properties"/>
<entry key="ws-security.encryption.username" value="useReqSigCert"/>
</jaxws:properties>