如何从WS02 Api Manager将基本auth头传递给SOAP端点?

时间:2016-10-26 09:43:46

标签: wso2 wso2esb wso2carbon wso2-am

我正在使用API​​ Manager 2.0,我设计了一个新的API,生产网址是Web服务的终点。在API中,我添加了" 邮件调解政策"在请求中将json转换为soap并在请求中将soap转换回json。没有身份验证时,这可以正常工作。

当我尝试连接到使用basic进行身份验证的端点时,无法发送auth标头。是否有可能通过,如果可以,如何实现呢?

我已经尝试过Endpoint Security Schema,但没有成功。

2 个答案:

答案 0 :(得分:1)

如果您正确配置Endpoint Security Scheme,您应该在api文件的Authorization目录中看到如下所示的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>

答案 1 :(得分:0)

您可以通过实现可以为特定API配置的介体来实现此目的。在进行ESB调用之前,将调用该类,您可以检查请求并使用基本身份验证详细信息设置标头。 脚步。 1.创建一个中介项目 2.在mediator类中实现日志(handleRequest方法) 3.将此类导出为jar文件 4.将其复制到Carbon_home / repository / components / lib中 5.为特定API文件配置介体(C:\ WSO2 \ wso2am-   2.0.0 \库\部署\服务器\突触CONFIGS \ DEFAULT \ API) 6.在处理程序部分示例中添加配置

  1. 重新启动服务器APM