2016-10-26 5 views
1

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

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

Я уже пробовал схему защиты конечных точек и не добился успеха.

+0

Вы пробовали этот? https://docs.wso2.com/display/AM200/Basic+Auth – Bee

+0

@Bhathiya: да, нет успеха в этом. На данный момент я использую ESB для преодоления этой проблемы. – Nirosan

ответ

1

Если вы правильно настроили 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> 
+0

да те включены ... мой текущий бизнес дело, как это, 1.esb называет серверную службу с аутентификации 2. API менеджера вызовов ESB я хочу сделать работу как 1. ESB обращается к серверному сервису с помощью аутентификации 2. Администратор api вызывает esb (** с данными аутентификации, которые необходимы для аутентификации внутренней службы) Этого можно достичь? – Nirosan

+0

Когда вы устанавливаете свойство «Авторизация», как указано выше, вы указываете учетные данные жесткого кода. Но, как я понял, вы не хотите их жестко кодировать. Вы хотите отправить эти учетные данные с помощью вызова APIM. Правильно ли я понимаю? Если да, вам не обязательно следовать приведенной выше ссылке. Вы можете просто отправить reqiured http-заголовок с вашим запросом APIM, – Bee

0

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

  1. Перезагрузите сервер APM