我正在使用WSO2 API管理器(版本3.0.1)作为前端,通过对CKAN的API调用(版本2.8.2)访问数据。
私有CKAN数据集需要如here中所述的授权令牌。
“当调用需要授权的API函数时,必须通过在HTTP请求中提供API密钥来对自己进行身份验证。”
在WSO2中如何完成?具体来说,需要更改哪些配置文件/设置才能实现此目的?
我从this documentation中看到,如果在Eclipse中使用工具插件进行配置,则可以使用类似的方法来完成(步骤23):
curl -k -H "Authorization: Bearer api-key-for-WSO2-goes-here" -H "Custom: Bearer api-key-for-CKAN-goes-here" https://my-wso2-host-goes-here:8243/test/1.0.0
但是,这些说明需要使用Eclipse。我不使用Eclipse,也不想或不打算开始使用它。我希望WSO2配置与IDE无关。
因此,如果没有Eclipse,如何完成此任务。即需要在服务器上或在WSO2 API Publisher和/或WSO2 API开发门户中修改哪些配置文件/设置,以通过WSO2 API-M传递CKAN的授权令牌?
您不必为此使用Eclipse。在教程中,Eclispse插件被用作轻松生成序列的工具。在该教程中,我们需要一个序列首先,因为后端所需的授权标头是“授权”。在WSO2 APIM中,这是一个保留标头,用于传递内部生成的令牌。因此,我们首先将后端令牌传递到具有不同标头名称的自定义标头中,然后将该值按顺序复制到Authorization标头中。该序列如下所示。
<sequence xmlns="http://ws.apache.org/ns/synapse" name="authorization_header_exchange">
<property name="X-Authorization" expression="get-property('transport', 'X-Authorization')" scope="default" type="STRING"/>
<property name="Authorization" expression="get-property('X-Authorization')" scope="transport" type="STRING" description=""/>
<property name="X-Authorization" scope="transport" action="remove"/>
请参阅[1]了解更多信息。
但是,在不使用中介序列的情况下,您可以将X-CKAN-API-Key中的api密钥与请求本身一起发送。