【问题标题】:How to prevent Azure API Management from passing the subscription-key query parameter to Logic App?如何防止 Azure API 管理将订阅密钥查询参数传递给逻辑应用?
【发布时间】: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


【解决方案1】:

啊,我现在看到这些标头实际上是由 Azure API 管理自动发送到后端逻辑应用 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" />

这会解决它。

【讨论】:

    猜你喜欢
    • 2022-10-18
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 2014-10-12
    相关资源
    最近更新 更多