我需要将固定的Authorization标头附加到API端点。这是我的端点系统的特定于应用程序的令牌,因此我不需要API订阅者输入此信息,也不需要知道它们。
之前提出了一个几乎相似的question但尚未得到回答。 文档here没有提供具体的细节,有点模糊,所以我迷失了如何实现这一点。有人这样做过吗?
感谢任何帮助,干杯!
答案 0 :(得分:0)
是否要将其设置为自定义HTTP标头并将其发送到后端?如果是,那么您可以使用属性介体将其设置为传递范围属性,就在API的seSece内部发送介体之前,如下所示。查看发送中介之前的属性Fixed-Authorization设置。
<?xml version="1.0" encoding="UTF-8"?>
<api xmlns="http://ws.apache.org/ns/synapse"
name="admin--Hello"
context="/hello"
version="1.0.0"
version-type="url">
<resource methods="POST GET OPTIONS DELETE PUT"
url-mapping="/*"
faultSequence="fault">
<inSequence>
<filter source="$ctx:AM_KEY_TYPE" regex="PRODUCTION">
<then>
<property name="Fixed-Authorization" value="yourAppToken" scope="transport"/>
<send>
<endpoint name="admin--Hello_APIproductionEndpoint_0">
<http uri-template="http://echo.jsontest.com/key/value/one/two"/>
</endpoint>
</send>
</then>
<else>
<sequence key="_sandbox_key_error_"/>
</else>
</filter>
</inSequence>
<outSequence>
<send/>
</outSequence>
</resource>
<handlers>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler"/>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.throttling.APIThrottleHandler">
<property name="id" value="A"/>
<property name="policyKey" value="gov:/apimgt/applicationdata/tiers.xml"/>
</handler>
<handler class="org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageHandler"/>
<handler class="org.wso2.carbon.apimgt.usage.publisher.APIMgtGoogleAnalyticsTrackingHandler">
<property name="configKey" value="gov:/apimgt/statistics/ga-config.xml"/>
</handler>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerExtensionHandler"/>
</handlers>
</api>
如果您访问API,此属性将作为HTTP标头发送到您的后端端点。您可以参考this post获取更详细的说明。
如果您只想将此应用程序令牌传递给后端(但不是HTTP头),则可以使用JWT将其传递给后端。有关详细信息,请参阅this document。