1

如何提取 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>

谢谢

4

1 回答 1

3

你可以像这样提取;

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

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

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

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

于 2014-11-18T07:20:22.443 回答