【发布时间】:2020-06-05 21:43:38
【问题描述】:
我正在使用 Azure API 管理作为我的逻辑应用程序的前端。需要启用“需要订阅”设置,因为我们确实需要保护。但是,我们必须通过查询参数发送密钥,因为我们的调用应用程序只支持 GET,不支持 POST。
所以我的 API 调用使用 https://my.azure-api.net/myapi/manual/paths/invoke?subscription-key=mykey 的格式发送到 Azure
现在在 Azure API 设置中,我确实创建了一个策略集来删除“订阅密钥”查询参数上的操作,但问题是:
即使参数已从请求正文中删除到 Logic App 中,在挖掘 Logic App 中显示各种标头的“RAW”输出时,我们可以在这两个标头中看到订阅密钥:
"X-WAWS-Unencoded-URL": "/myapi/manual/paths/invoke?subscription-key=xxx
"X-Original-URL": /myapi/manual/paths/invoke?subscription-key=xxx
换句话说,在删除参数之前,逻辑应用可以使用完整的原始查询 URL。这会将 API 订阅密钥公开给逻辑应用。
有什么解决方法吗?
【问题讨论】:
-
您是否尝试过使用 KeVault 来存储您的密钥?
-
你能显示你添加的策略吗?
-
<set-query-parameter name="subscription-key" exists-action="delete" />这是我添加的。
标签: azure azure-logic-apps azure-api-management