Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wso2 如何从WS02API管理器将基本身份验证头传递到SOAP端点?_Wso2_Wso2esb_Wso2carbon_Wso2 Am - Fatal编程技术网

Wso2 如何从WS02API管理器将基本身份验证头传递到SOAP端点?

Wso2 如何从WS02API管理器将基本身份验证头传递到SOAP端点?,wso2,wso2esb,wso2carbon,wso2-am,Wso2,Wso2esb,Wso2carbon,Wso2 Am,我使用的是API Manager 2.0,我设计了一个新的API,生产url是web服务的终点。在API中,我添加了“消息中介策略”,以便在请求中将json转换为soap,并在请求中将soap转换回json。在没有身份验证的情况下,这可以正常工作 当我尝试连接到使用basic进行身份验证的端点时,我无法发送身份验证标头。有可能通过吗?如果有,如何实现 我已经尝试了端点安全方案,但没有成功。如果您正确配置端点安全方案,您应该在api文件的存储库/deployment/server/synapse

我使用的是API Manager 2.0,我设计了一个新的API,生产url是web服务的终点。在API中,我添加了“消息中介策略”,以便在请求中将json转换为soap,并在请求中将soap转换回json。在没有身份验证的情况下,这可以正常工作

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


我已经尝试了端点安全方案,但没有成功。

如果您正确配置
端点安全方案
,您应该在api文件的
存储库/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>

您可以通过实现一个中介来实现这一点,该中介可以针对特定的API进行配置。在进行ESB调用之前将调用该类,在此期间,您可以检查请求并使用基本身份验证详细信息设置标头。 步骤。 1.创建一个中介项目 2.在中介类中实现日志(HandlerRequest方法) 3.将此类导出为jar文件 4.将其复制到Carbon_home/repository/components/lib中 5.为位于的特定API文件(C:\WSO2\wso2am)配置中介- 2.0.0\repository\deployment\server\synapse configs\default\api) 6.在示例的handlers部分添加配置

  • 重新启动服务器APM

  • 你试过这个吗@巴西娅:是的,没有成功。。目前我正在使用ESB来解决这个问题。。。我当前的业务案例是这样的,1.esb使用身份验证调用后端服务2。api管理器调用esb,我想让它像1一样工作。esb使用身份验证2调用后端服务。api manager调用esb(具有后端服务身份验证所需的身份验证详细信息)是否可以实现这一点?当您像上面那样设置
    授权
    属性时,您需要硬编码后端凭据。但据我所知,您不想硬编码它们。您需要的是通过APIM呼叫发送这些凭据。我的理解正确吗?如果是,你不必遵循上面的链接。您只需在APIM请求中发送所需的http头,