WSO2序列:捕获传入请求的标头

问题描述 投票:0回答:1

我正在编写APIM 2.6的调解序列。关键是要提取Authorization headers进行进一步处理。基于this documentation,我想到了以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="ExtractAuthorization2EndPoint" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
    <property expression="get-property('axis2', 'TRANSPORT_HEADERS')" name="basic_auth" scope="axis2"/>
    <log level="full">
        <property expression="get-property('basic_auth')" name="captured_headers"/>
    </log>
</sequence>

问题

阅读日志,我得到captured_headers = null

TID: [-1234] [] [2020-01-09 13:46:44,178]  INFO {org.apache.synapse.mediators.builtin.LogMediator} -  To: /somewhere, MessageID: urn:uuid:e9fc50db-5a7b-41d1-9613-80b215633bcd, Direction: request, captured_headers = null, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body/></soapenv:Envelope> {org.apache.synapse.mediators.builtin.LogMediator}

如何捕获传入请求的标头(更具体地说,是Authorization

其他各种尝试

  • get-property('transport','Authorization')
  • $trp:Authorization
http-headers wso2 wso2-am
1个回答
0
投票

[Authorization Header]在API Manager中仅用于内部授权,在发送到后端之前,该标头通常从传出请求(从APIM gw到后端)中删除。这发生在APIAuthenticationHandler级别。您附加到API的自定义序列将在APIAuthenticationHandler之后执行。您可以参考[1]中的消息流程图以获得更好的理解。

现在让我们看看如何默认情况下将此APIAuthenticationHandler应用于API的突触文件。 (您可以在/ repository / deployments / server / synapse-configs / api文件夹中找到它)

<handler class="org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler">
      <property name="RemoveOAuthHeadersFromOutMessage" value="true"/>
      <property name="APILevelPolicy" value=""/>
      <property name="APISecurity" value="oauth2"/>
</handler>

您可以如下修改上述处理程序,并强制将Oauth标头保留在传出消息中。

<property name="RemoveOAuthHeadersFromOutMessage" value="false"/>

修改API的突触后,您可能会在控制台中看到类似以下的日志。

INFO - APIDeployer API: admin--PizzaShackAPI:v1.0.0 has been updated from the file: /home/sachini/.wum3/products/wso2am/2.6.0/full/wso2am-2.6.0/repository/deployment/server/synapse-configs/default/api/admin--PizzaShackAPI_v1.0.0.xml

现在,尝试调用API。您应该能够登录Authorization标头。

[1]。 https://docs.wso2.com/display/AM210/Message+Flow+in+the+API+Manager+Gateway

© www.soinside.com 2019 - 2024. All rights reserved.