2016-05-30 15 views
0

Имея WSO2 ESB 4.9.0, можно ли включить WS-Security клиента, настроить политику для конечной точки, где внешняя (бэкэнд) служба возвращает приложение MTOM?WSO2 ESB WS-Security с MTOM

требование: внешняя бэкэнд-услуга требует, чтобы запрос был подписан и возвращал (необязательно) ответ MTOM, который не подписан (обычным).

Как только модуль Rampart занимается и въездной политика находится в силе, то ответ не получает через простой прокси, за исключением следующего:

Caused by: org.apache.ws.security.WSSecurityException: Error in converting SOAP Envelope to Document; nested exception is: 
     org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: Expected xop:Include as the sole child of an element information item (see section 3.2 of http://www.w3.org/TR/xop10/) 
     at org.apache.rampart.util.Axis2Util.getDocumentFromSOAPEnvelope(Axis2Util.java:149) 
     at org.apache.rampart.RampartMessageData.<init>(RampartMessageData.java:268) 
     ... 11 more 
Caused by: org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: Expected xop:Include as the sole child of an element information item (see section 3.2 of http://www.w3.org/TR/xop10/) 
     at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296) 
     at org.apache.axiom.om.impl.llom.OMSerializableImpl.build(OMSerializableImpl.java:78) 
     at org.apache.axiom.om.impl.llom.OMElementImpl.build(OMElementImpl.java:722) 
     at org.apache.rampart.util.Axis2Util.getDocumentFromSOAPEnvelope(Axis2Util.java:84) 
     ... 12 more 
Caused by: javax.xml.stream.XMLStreamException: Expected xop:Include as the sole child of an element information item (see section 3.2 of http://www.w3.org/TR/xop10/) 
     at org.apache.axiom.util.stax.xop.XOPDecodingStreamReader.next(XOPDecodingStreamReader.java:187) 
     at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681) 
     at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214) 
     ... 15 more 

Однако - есть Включать элемент:

<inc:Include href="cid:[email protected]" xmlns:inc="http://www.w3.org/2004/08/xop/include"/> 

Попытка протестировать сервис на местном уровне (создание службы макета, похожую на внешний сервис) у меня есть исключение:

Caused by: org.apache.axiom.om.OMException: Part content ID cannot be blank for non root MIME parts 
     at org.apache.axiom.attachments.Attachments.getNextPartDataHandler(Attachments.java:648) 
     at org.apache.axiom.attachments.Attachments.getDataHandler(Attachments.java:350) 

, который, как я полагаю, связан с выпуском https://wso2.org/jira/browse/ESBJAVA-3585. Связано это или у меня неправильный сервис макета? Работает ли MTOM с включенной политикой безопасности?

ответ

0

Кажется Есть два вопроса, связанные:

Caused by: javax.xml.stream.XMLStreamException: Expected xop:Include as the sole child of an element information item (see section 3.2 of http://www.w3.org/TR/xop10/) 

Это вызвано «довольно печати» особенность сервиса серверной. Axis 2 строго выполняет спецификацию, где элемент xop: Include должен быть единственным и единственным дочерним, поэтому допустимые пробелы не допускаются.

org.apache.axiom.om.OMException: Part content ID cannot be blank for non root MIME parts 

Это, кажется, ошибка, еще не решена в это время. https://wso2.org/jira/browse/ESBJAVA-3585

Обходной способ может изменить тип сообщения на текст/xml (эффективно вставлять полезную нагрузку base64 в элемент XML), что подходит для небольших/разумных размеров вложений.

Если вложения могут быть больше или нагрузка высокая, следует считать, что хранилище в виде файла и передать только имя файла.

 Смежные вопросы

  • Нет связанных вопросов^_^