WSO2 EI - Невозможно установить заголовок SOAP с маркером OAuth - PullRequest
0 голосов
/ 18 февраля 2019

Я настроил прокси-службу WSDL на EI WSO2, которая указывает на внешнюю службу, защищенную OAuth.

Моя проблема заключается в том, что, помимо всех моих усилий, я не могу установить заголовок авторизации на предъявителя для своих вызовов службы,Конечная точка службы всегда возвращает ошибку «Не удается найти токен».Я уже перепробовал все руководства и документацию по заголовкам WSO2 (используя Header Mediator и header в качестве свойства), но ничего не работает.

Мой вопрос похож на этот , также без anwser.

Служба прокси WSDL используется приложением WCF .NET, и установлен заголовок Bearer.

Это конфигурация XML:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="WSDLProxy"
       startOnLoad="true"
       statistics="disable"
       trace="disable"
       transports="http">
    <target>
        <inSequence>
            <send>
                <endpoint>
                    <wsdl port="RegisterEndpoint"
                        service="RegisterService.serviceagent"
                        uri="[external-wsdl-uri]"/>
                </endpoint>
             </send>
         </inSequence>
         <outSequence>
            <send/>
         </outSequence>
    </target>
    <publishWSDL uri="[external-wsdl-uri]"/>    
</proxy>

1 Ответ

0 голосов
/ 12 апреля 2019

В промежуточном сценарии, таком как данный пример прокси-службы WSDL, заголовок «Авторизация» будет отправлен в серверную службу, если он отправлен в запросе клиента на «WSDLProxy».Однако, если ваш клиент отправляет маркер Bearer в пользовательском транспортном заголовке, вы должны будете установить его в качестве заголовка «Авторизация» перед внутренним вызовом, как показано ниже.

...
 <inSequence>
    <property expression="get-property('transport', 'CUSTOM-Bearer')" name="Authorization" scope="transport" type="STRING"/>
    <property action="remove" name="CUSTOM-Bearer" scope="transport"/>
    <send>
        <endpoint>
            <wsdl port="RegisterEndpoint"
                service="RegisterService.serviceagent"
                uri="[external-wsdl-uri]"/>
        </endpoint>
     </send>
 </inSequence>
...
...