Как заставить wss4j не создавать элемент Timestamp в заголовке мыла

Есть ли способ заставить wss4j не добавлять элемент Timestamp из ws-security в заголовок SOAP?

То, что у меня есть сейчас, это:

     <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header>
<ns3:Security xmlns="http://docs.oasis-open.org/ws-sx/ws-trust/200512" xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ns3="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ns4="http://www.w3.org/2005/08/addressing" xmlns:ns5="http://www.rsa.com/names/2009/12/std-ext/WS-Trust1.4/advice" xmlns:ns6="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ns7="http://www.w3.org/2000/09/xmldsig#" xmlns:ns8="http://www.rsa.com/names/2009/12/std-ext/SAML2.0" xmlns:ns9="urn:oasis:names:tc:SAML:2.0:conditions:delegation" soap:mustUnderstand="1">

<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-1"><wsu:Created>2015-11-18T16:32:21.705Z</wsu:Created><wsu:Expires>2015-11-18T16:37:21.705Z</wsu:Expires></wsu:Timestamp>

<ns2:Timestamp xmlns="http://docs.oasis-open.org/ws-sx/ws-trust/200512" xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ns3="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ns4="http://www.w3.org/2005/08/addressing" xmlns:ns5="http://www.rsa.com/names/2009/12/std-ext/WS-Trust1.4/advice" xmlns:ns6="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ns7="http://www.w3.org/2000/09/xmldsig#" xmlns:ns8="http://www.rsa.com/names/2009/12/std-ext/SAML2.0" xmlns:ns9="urn:oasis:names:tc:SAML:2.0:conditions:delegation" ns2:Id="_32c97089-04ac-49b0-8758-3d176d110ec7"><ns2:Created>2015-11-18T16:32:19.373Z</ns2:Created><ns2:Expires>2015-11-18T16:42:19.373Z</ns2:Expires></ns2:Timestamp>

..........Truncated

Элемент ‹ wsu:Timestamp > добавляется wss4j. Элемент ‹ ns2:Timestamp > добавляется настраиваемым обработчиком меток времени.

Как запретить wss4j добавлять элемент временной метки, чтобы в заголовке SOAP была только 1 временная метка (тот, который добавляется пользовательским обработчиком временных меток)?

Любая помощь будет оценена по достоинству!


person DThomas    schedule 18.11.2015    source источник


Ответы (1)


Я не совсем знаком с CXF, но я использовал WSS4J с Spring, и я думаю, что это очень похоже.

Следующий фрагмент можно найти на http://cxf.apache.org/docs/ws-security.html:

outProps.put(WSHandlerConstants.ACTION, 
WSHandlerConstants.TIMESTAMP + " " + 
WSHandlerConstants.SIGNATURE + " " + 
WSHandlerConstants.ENCRYPT);

Это определяет три действия «защиты», которые вы хотите, чтобы WSS4J выполнял, разделенные пробелом. У вас, вероятно, есть что-то подобное в вашей конфигурации; если вы хотите избавиться от заголовка Timestamp, сгенерированного WSS4J, просто удалите файл WSHandlerConstants.TIMESTAMP.

person mfred    schedule 04.12.2015