我正在使用Azure API管理作为我的Logic App的前端。需要启用“需要订阅”设置,因为我们确实需要保护。但是,我们必须通过查询参数发送键,因为我们的调用应用程序只支持GET,而不支持POST。
因此,我的应用程序接口调用是使用https://my.azure-api.net/myapi/manual/paths/invoke?subscription-key=mykey格式发送到Azure的
现在在Azure API设置中,我确实创建了一个策略集来删除"subscription-key“查询参数上的操作,但这里有个问题:
即使将参数从请求正文中删除到Logic App中,但在逻辑App中的“原始”输出中,它显示了各种头部,我们可以在这两个头部中看到订阅密钥:
"X-WAWS-Unencoded-URL": "/myapi/manual/paths/invoke?subscription-key=xxx
"X-Original-URL": /myapi/manual/paths/invoke?subscription-key=xxx换句话说,在删除参数之前,完整的原始查询URL对Logic App是可用的。这会将API订阅密钥公开给Logic App。
有什么解决方法吗?
发布于 2020-06-07 06:40:06
啊,我现在明白了,这些头实际上是由Azure API Management自动发送到后端逻辑应用程序API的,所以除了查询参数策略之外,我所要做的就是设置头策略来删除它们。
<set-query-parameter name="subscription-key" exists-action="delete" /> <set-header name="X-WAWS-Unencoded-URL" exists-action="delete" /> <set-header name="X-Original-URL" exists-action="delete" />
这个可以解决这个问题。
https://stackoverflow.com/questions/62224522
复制相似问题