如何使用中介提取http标头

时间:2014-11-18 05:32:08

标签: wso2 wso2esb wso2-am dss

如何提取

之类的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>

谢谢

1 个答案:

答案 0 :(得分:3)

你可以像这样提取;

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

然后记录下来,看看你在检索什么..

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

然后在您的代理配置中指定构建Basic auth标头。 这是一个blog post,它解释了如何从序列中检索各种信息