Как включить функцию адресации в cxf xml? - PullRequest
0 голосов
/ 13 апреля 2020

Как добавить WS-адресацию по умолчанию к xml?

    <cxf:cxfEndpoint id="endpoint" xmlns:s="http://tempuri.org/"
      address="https://uslugaterytws1test.stat.gov.pl/TerytWs1.svc" 
      endpointName="s:custom" 
      serviceName="s:TerytWs1" 
      wsdlURL="classpath:/wsdl/terytws1.wsdl">
    <cxf:properties>
      <entry key="schema-validation-enabled" value="false" />
    </cxf:properties>
    <cxf:inInterceptors>
    </cxf:inInterceptors>
    <cxf:inFaultInterceptors>
    </cxf:inFaultInterceptors>
    <cxf:outInterceptors>
    </cxf:outInterceptors>
    <cxf:outFaultInterceptors>
    </cxf:outFaultInterceptors>
  </cxf:cxfEndpoint>


  <cxf:cxfEndpoint id="poxyEndpoint" xmlns:s="http://tempuri.org/"
      address="http:localhost:5678/myproxy" 
      endpointName="s:customProxy" 
      serviceName="s:TerytWs1Proxy" 
      wsdlURL="classpath:/wsdl/terytws1Proxy.wsdl">
    <cxf:properties>
      <entry key="schema-validation-enabled" value="false" />
    </cxf:properties>
    <cxf:inInterceptors>
    </cxf:inInterceptors>
    <cxf:inFaultInterceptors>
    </cxf:inFaultInterceptors>
    <cxf:outInterceptors>
      <ref component-id="wssOutInterceptor" />
    </cxf:outInterceptors>
    <cxf:outFaultInterceptors>
      <ref component-id="wssOutInterceptor" />
    </cxf:outFaultInterceptors>
  </cxf:cxfEndpoint>



  <camelContext id="proxyTerytContext" xmlns="http://camel.apache.org/schema/blueprint">
  <route id="route-TerytWs1">
      <from id="inbound" uri="cxf:bean:proxyEndpoint?dataFormat=CXF_MESSAGE" />
      <to id="outbound" uri="cxf:bean:endpoint?dataFormat=CXF_MESSAGE" />
    </route>
  </camelContext>

Когда я отправляю запрос на http:localhost:5678/myproxy, тогда я получаю:

<faultcode xmlns:a="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">a:InvalidSecurity</faultcode>
<faultstring xml:lang="en-US">An error occurred when verifying security for the message.</faultstring>

Я прочитал много похожих вопросов и примеров, но не нашли решения для чистого cxf xml. Я пытался решить это в течение 2 дней. Теперь я плачу.


РЕДАКТИРОВАТЬ: Это оригинальный wsdl: https://uslugaterytws1test.stat.gov.pl/terytws1.svc?wsdl
, и это мой прокси к нему: https://github.com/woblak/training/blob/master/teryt_testProxy.wsdl
пользователь: TestPubliczny
проход: 1234abcd

1 Ответ

0 голосов
/ 17 апреля 2020

В модульных тестах Camel есть несколько примеров, которые тестируют конечные точки CXF с включенной WS-Addressing; WSAddressingTest-context. xml похоже, что это может иметь отношение к вашему вопросу?

Здесь WS-Addressing был включен на конечной точке CXF путем добавления элемента wsa:addressing в features:

<cxf:cxfEndpoint...>
    <cxf:features>
        <wsa:addressing xmlns:wsa="http://cxf.apache.org/ws/addressing" />
    </cxf:features>
</cxf:cxfEndpoint>

Ошибка, похоже, связана с безопасностью. У вас настроен перехватчик (wssOutInterceptor), но нет исходного кода. Возможно, вам стоит заглянуть туда, чтобы увидеть, устанавливаете ли вы параметры аутентификации.

Я бы также добавил протоколирование сообщений , чтобы вы могли видеть содержимое полезной нагрузки, отправленной в целевую систему, и проверить, что она содержит ваши учетные данные.

Или, если вы ' Вы можете использовать пространство имен Camel CXF (xmlns:cxf="http://camel.apache.org/schema/cxf"):

<cxf:cxfEndpoint ... loggingFeatureEnabled="true">
  ...
</cxf:cxfEndpoint>
...