Как передать базовый заголовок аутентификации в конечную точку SOAP из WS02 Api Manager?

Я использую API Manager 2.0, я разработал новый API, а рабочий URL-адрес является конечной точкой веб-службы. В API я добавил «Политики передачи сообщений» для преобразования json в мыло в запросе и обратного преобразования мыла в json в запросе. Это отлично работает, когда нет аутентификации.

Когда я попытался подключиться к конечной точке, которая аутентифицирована с использованием базового уровня, я не смог отправить заголовок аутентификации. Можно ли пройти и если да, то как этого добиться?

Я уже пробовал схему Endpoint Security и безуспешно.


person Nirosan    schedule 26.10.2016    source источник
comment
Вы пробовали это? docs.wso2.com/display/AM200/Basic+Auth   -  person Bee    schedule 26.10.2016
comment
@Bhathiya: да, безуспешно .. На данный момент я использую ESB для решения этой проблемы.   -  person Nirosan    schedule 26.10.2016


Ответы (2)


Если вы правильно настроили Endpoint Security Scheme, вы должны увидеть свойство Authorization, как показано ниже, в вашем файле api в каталоге repository/deployment/server/synapse-configs/default/api/. Дважды проверьте, есть ли он там.

   <resource methods="GET" url-mapping="/menu" faultSequence="fault">
      <inSequence>
         <property name="api.ut.backendRequestTime"
                   expression="get-property('SYSTEM_TIME')"/>
         <filter source="$ctx:AM_KEY_TYPE" regex="PRODUCTION">
            <then>
               <property name="Authorization"
                         expression="fn:concat('Basic ', 'YmhhdGhpeWE6cGFzc3dvcmQ=')"
                         scope="transport"/>
               <send>
                  <endpoint name="admin--PizzaShackAPI_APIproductionEndpoint_1">
                     <http uri-template="https://localhost:9443/am/sample/pizzashack/v1/api/"/>
                     <property name="ENDPOINT_ADDRESS"
                               value="https://localhost:9443/am/sample/pizzashack/v1/api/"/>
                  </endpoint>
               </send>
            </then>
            <else>
               <property name="Authorization"
                         expression="fn:concat('Basic ', 'YmhhdGhpeWE6cGFzc3dvcmQ=')"
                         scope="transport"/>
               <send>
                  <endpoint name="admin--PizzaShackAPI_APIsandboxEndpoint_1">
                     <http uri-template="https://localhost:9443/am/sample/pizzashack/v1/api/"/>
                     <property name="ENDPOINT_ADDRESS"
                               value="https://localhost:9443/am/sample/pizzashack/v1/api/"/>
                  </endpoint>
               </send>
            </else>
         </filter>
      </inSequence>
      <outSequence>
         <class name="org.wso2.carbon.apimgt.usage.publisher.APIMgtResponseHandler"/>
         <send/>
      </outSequence>
   </resource>
person Bee    schedule 26.10.2016
comment
да, они включены ... мой текущий бизнес-кейс таков: 1.esb вызывает внутреннюю службу с аутентификацией 2. диспетчер api вызывает esb, который я хочу сделать, работает как 1. esb вызывает внутреннюю службу с аутентификацией 2. диспетчер api вызывает esb (с деталями аутентификации, которые необходимы для аутентификации серверной службы), возможно ли этого достичь? - person Nirosan; 28.10.2016
comment
Когда вы устанавливаете свойство Authorization, как указано выше, вы жестко кодируете учетные данные серверной части. Но, как я понял, жестко их кодировать не стоит. Вы хотите отправить эти учетные данные с помощью вызова APIM. Я правильно понимаю? Если да, переходить по ссылке выше не обязательно. Вы можете просто отправить требуемый HTTP-заголовок с вашим запросом APIM, - person Bee; 29.10.2016

Вы можете сделать это, реализовав посредник, который можно настроить для конкретного API. Класс будет вызываться перед вызовом ESB, во время которого вы можете проверить запрос и установить заголовок с основными данными аутентификации. Шаги. 1. Создайте проект посредника. 2. Реализуйте журнал в классе посредника (метод handleRequest). 3. Экспортируйте этот класс как файл jar. 4. Скопируйте его в Carbon_home / repository / components / lib. 5. Настройте посредник для конкретного файла API. находится (C: \ WSO2 \ wso2am- 2.0.0 \ repository \ deployment \ server \ synapse-configs \ default \ api) 6. добавьте конфигурацию в пример раздела обработчиков

  1. Перезагрузите сервер APM
person Basanagouda Patil    schedule 24.04.2017