【问题标题】:How to extract http headers using a mediator如何使用中介器提取 http 标头
【发布时间】:2014-11-18 15:20:22
【问题描述】:

我如何提取像这样的 http 标头

Authorization: ​"admin 0PN5J17HBGZHT7JJ3X82"

其中 admin 是用户名,0PN5J17HBGZHT7JJ3X82 是密码,并将其分配给属性/变量,然后将其传递给 dss 服务以进行用户登录验证。据我所知,我们的 API 可以使用自定义序列和中介 (https://docs.wso2.com/display/AM170/Adding+Mediation+Extensions) 来执行此操作,但不清楚如何提取此标头并将其分配给不同的属性名称,如登录名和密码。

中介头可以处理这个问题吗?或者这是使用代理服务的另一种方式?

标头中介

<in>
    <header name="Authorization" value="admin 0PN5J17HBGZHT7JJ3X82" scope="transport"/>
    <send>
        <endpoint name="people">
            <address uri="http://localhost:9443/testapi/" format="get"/>
        </endpoint>
    </send>
</in>
<out>
    <send/>
</out>

代理服务

<proxy name="adminServiceProxy" transports="https http"
          startOnLoad="true" trace="disable">
      <description/>
      <target>
         <endpoint>
            <address uri="https://localhost:9443/testapi"/>
         </endpoint>
         <inSequence>
            <property name="Authorization"
                      expression="fn:concat('Basic ','admin:0PN5J17HBGZHT7JJ3X82')"
                      scope="transport"/>
         </inSequence>
         <outSequence>
          <send/>
         </outSequence>
      </target>
   </proxy>

谢谢

【问题讨论】:

    标签: wso2 wso2esb wso2-am dss


    【解决方案1】:

    你可以这样提取;

     <property name="AuthHeader" expression="$trp:Authorization"/>
    

    然后记录它并查看您正在检索的内容..

    <log>
    <property name =" Authheder value" expression=get-property('AuthHeader')/>
    </log>
    

    然后按照您在代理配置中指出的那样构造基本身份验证标头。 这是blog post,它解释了如何从序列中检索各种信息

    【讨论】:

    • 您可以定义这样的中介序列并存储在注册表中。并且在发布 API 时,选择正确的序列docs.wso2.com/display/AM170/Adding+Mediation+Extensions。或者,是的,您可以在代理服务中定义复杂的序列,并从 APIManager 调用该代理服务作为您的端点。
    • 一旦我传递了标头并在服务中使用它们,我还有一个问题,有没有办法获取响应并将它们分配给可用于中介序列的标头?跨度>
    猜你喜欢
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2023-03-13
    • 2012-10-20
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    相关资源
    最近更新 更多